/* Minification failed. Returning unminified contents.
(7,1): run-time error CSS1019: Unexpected token, found '('
(7,2): run-time error CSS1019: Unexpected token, found 'function('
(7,11): run-time error CSS1019: Unexpected token, found '$'
(7,12): run-time error CSS1019: Unexpected token, found ')'
(7,14): run-time error CSS1019: Unexpected token, found '{'
(8,2): run-time error CSS1019: Unexpected token, found '"use strict"'
(10,15): run-time error CSS1031: Expected selector, found '='
(10,15): run-time error CSS1025: Expected comma or open brace, found '='
(79,17): run-time error CSS1031: Expected selector, found '='
(79,17): run-time error CSS1025: Expected comma or open brace, found '='
(112,11): run-time error CSS1031: Expected selector, found '='
(112,11): run-time error CSS1025: Expected comma or open brace, found '='
(353,14): run-time error CSS1031: Expected selector, found '='
(353,14): run-time error CSS1025: Expected comma or open brace, found '='
(381,2): run-time error CSS1019: Unexpected token, found '$'
(381,12): run-time error CSS1031: Expected selector, found '='
(381,12): run-time error CSS1025: Expected comma or open brace, found '='
(394,1): run-time error CSS1019: Unexpected token, found '}'
(394,2): run-time error CSS1019: Unexpected token, found ')'
(394,3): run-time error CSS1019: Unexpected token, found '('
(394,10): run-time error CSS1031: Expected selector, found ')'
(394,10): run-time error CSS1025: Expected comma or open brace, found ')'
(401,1): run-time error CSS1019: Unexpected token, found '!'
(401,11): run-time error CSS1031: Expected selector, found '('
(401,11): run-time error CSS1025: Expected comma or open brace, found '('
(401,14874): run-time error CSS1019: Unexpected token, found '('
(401,14879): run-time error CSS1031: Expected selector, found ')'
(401,14879): run-time error CSS1025: Expected comma or open brace, found ')'
(403,1): run-time error CSS1019: Unexpected token, found '('
(403,2): run-time error CSS1019: Unexpected token, found 'function('
(403,17): run-time error CSS1031: Expected selector, found ')'
(403,17): run-time error CSS1025: Expected comma or open brace, found ')'
(483,2): run-time error CSS1019: Unexpected token, found ')'
(483,3): run-time error CSS1019: Unexpected token, found '('
(483,17): run-time error CSS1031: Expected selector, found ')'
(483,17): run-time error CSS1025: Expected comma or open brace, found ')'
(484,21): run-time error CSS1031: Expected selector, found '='
(484,21): run-time error CSS1025: Expected comma or open brace, found '='
(579,26): run-time error CSS1031: Expected selector, found '='
(579,26): run-time error CSS1025: Expected comma or open brace, found '='
(732,2): run-time error CSS1019: Unexpected token, found '('
(732,3): run-time error CSS1019: Unexpected token, found 'function('
(732,12): run-time error CSS1019: Unexpected token, found '$'
(732,13): run-time error CSS1019: Unexpected token, found ')'
(732,15): run-time error CSS1019: Unexpected token, found '{'
(733,3): run-time error CSS1019: Unexpected token, found '$'
(733,10): run-time error CSS1030: Expected identifier, found '":"'
(733,10): run-time error CSS1033: Expected closing bracket, found '":"'
(733,13): run-time error CSS1031: Expected selector, found ']'
(733,13): run-time error CSS1025: Expected comma or open brace, found ']'
(747,1): run-time error CSS1019: Unexpected token, found '}'
(747,2): run-time error CSS1019: Unexpected token, found ')'
(747,3): run-time error CSS1019: Unexpected token, found '('
(747,10): run-time error CSS1031: Expected selector, found ')'
(747,10): run-time error CSS1025: Expected comma or open brace, found ')'
(750,1): run-time error CSS1019: Unexpected token, found '$'
(750,17): run-time error CSS1031: Expected selector, found '='
(750,17): run-time error CSS1025: Expected comma or open brace, found '='
(768,1): run-time error CSS1019: Unexpected token, found '$'
(768,18): run-time error CSS1031: Expected selector, found '='
(768,18): run-time error CSS1025: Expected comma or open brace, found '='
(787,1): run-time error CSS1019: Unexpected token, found '$'
(787,22): run-time error CSS1031: Expected selector, found '='
(787,22): run-time error CSS1025: Expected comma or open brace, found '='
(805,1): run-time error CSS1019: Unexpected token, found '!'
(805,2): run-time error CSS1019: Unexpected token, found 'function('
(805,12): run-time error CSS1031: Expected selector, found ')'
(805,12): run-time error CSS1025: Expected comma or open brace, found ')'
(805,147): run-time error CSS1019: Unexpected token, found '('
(805,148): run-time error CSS1019: Unexpected token, found 'function('
(805,158): run-time error CSS1031: Expected selector, found ')'
(805,158): run-time error CSS1025: Expected comma or open brace, found ')'
(805,20102): run-time error CSS1019: Unexpected token, found ')'
(808,10): run-time error CSS1031: Expected selector, found 'statusChangeCallback('
(808,10): run-time error CSS1025: Expected comma or open brace, found 'statusChangeCallback('
(832,10): run-time error CSS1031: Expected selector, found 'checkLoginState('
(832,10): run-time error CSS1025: Expected comma or open brace, found 'checkLoginState('
(838,20): run-time error CSS1031: Expected selector, found '='
(838,20): run-time error CSS1025: Expected comma or open brace, found '='
(867,1): run-time error CSS1019: Unexpected token, found '('
(867,11): run-time error CSS1031: Expected selector, found '('
(867,11): run-time error CSS1025: Expected comma or open brace, found '('
(873,2): run-time error CSS1019: Unexpected token, found '('
(873,13): run-time error CSS1031: Expected selector, found ''script''
(876,10): run-time error CSS1031: Expected selector, found 'register_prospect_after_facebook_login('
(876,10): run-time error CSS1025: Expected comma or open brace, found 'register_prospect_after_facebook_login('
(894,10): run-time error CSS1031: Expected selector, found 'PostMessage('
(894,10): run-time error CSS1025: Expected comma or open brace, found 'PostMessage('
(920,10): run-time error CSS1031: Expected selector, found 'RegisterProspect('
(920,10): run-time error CSS1025: Expected comma or open brace, found 'RegisterProspect('
(956,10): run-time error CSS1031: Expected selector, found 'sign_up_with_facebook('
(956,10): run-time error CSS1025: Expected comma or open brace, found 'sign_up_with_facebook('
(970,10): run-time error CSS1031: Expected selector, found 'ProcessProspectRegistrationForSignInWithFacebook('
(970,10): run-time error CSS1025: Expected comma or open brace, found 'ProcessProspectRegistrationForSignInWithFacebook('
(1008,10): run-time error CSS1031: Expected selector, found 'ProcessProspectRegistrationForSignUpWithFacebook('
(1008,10): run-time error CSS1025: Expected comma or open brace, found 'ProcessProspectRegistrationForSignUpWithFacebook('
(1051,10): run-time error CSS1031: Expected selector, found 'signOut('
(1051,10): run-time error CSS1025: Expected comma or open brace, found 'signOut('
(1057,10): run-time error CSS1031: Expected selector, found 'IsAgent('
(1057,10): run-time error CSS1025: Expected comma or open brace, found 'IsAgent('
(1078,10): run-time error CSS1031: Expected selector, found 'IsProspect('
(1078,10): run-time error CSS1025: Expected comma or open brace, found 'IsProspect('
(1101,10): run-time error CSS1031: Expected selector, found 'IsUnregisteredAgent('
(1101,10): run-time error CSS1025: Expected comma or open brace, found 'IsUnregisteredAgent('
(1124,10): run-time error CSS1031: Expected selector, found 'googleAuthSuccess('
(1124,10): run-time error CSS1025: Expected comma or open brace, found 'googleAuthSuccess('
(1151,10): run-time error CSS1031: Expected selector, found 'googleAuthError('
(1151,10): run-time error CSS1025: Expected comma or open brace, found 'googleAuthError('
(1156,10): run-time error CSS1031: Expected selector, found 'loadProfile('
(1156,10): run-time error CSS1025: Expected comma or open brace, found 'loadProfile('
(1161,10): run-time error CSS1031: Expected selector, found 'loadProfileCallback('
(1161,10): run-time error CSS1025: Expected comma or open brace, found 'loadProfileCallback('
(1178,10): run-time error CSS1031: Expected selector, found 'RegisterProspectForSocialMedia('
(1178,10): run-time error CSS1025: Expected comma or open brace, found 'RegisterProspectForSocialMedia('
(1213,10): run-time error CSS1031: Expected selector, found 'sign_up_with_google_plus('
(1213,10): run-time error CSS1025: Expected comma or open brace, found 'sign_up_with_google_plus('
(1230,10): run-time error CSS1031: Expected selector, found 'sign_up_with_google_plus_load_profile('
(1230,10): run-time error CSS1025: Expected comma or open brace, found 'sign_up_with_google_plus_load_profile('
(1235,10): run-time error CSS1031: Expected selector, found 'sign_up_with_google_plus_load_profile_callback('
(1235,10): run-time error CSS1025: Expected comma or open brace, found 'sign_up_with_google_plus_load_profile_callback('
(1252,10): run-time error CSS1031: Expected selector, found 'ProcessProspectRegistrationForSignUpWithGooglePlus('
(1252,10): run-time error CSS1025: Expected comma or open brace, found 'ProcessProspectRegistrationForSignUpWithGooglePlus('
(1293,10): run-time error CSS1031: Expected selector, found 'ProcessRegistrationForSignInWithSocialMedia('
(1293,10): run-time error CSS1025: Expected comma or open brace, found 'ProcessRegistrationForSignInWithSocialMedia('
(1342,15): run-time error CSS1031: Expected selector, found '='
(1342,15): run-time error CSS1025: Expected comma or open brace, found '='
(1343,17): run-time error CSS1031: Expected selector, found '='
(1343,17): run-time error CSS1025: Expected comma or open brace, found '='
(1345,10): run-time error CSS1031: Expected selector, found 'microsoftGraphAuthenticationHandler('
(1345,10): run-time error CSS1025: Expected comma or open brace, found 'microsoftGraphAuthenticationHandler('
(1357,10): run-time error CSS1031: Expected selector, found 'acquireTokenPopupAndCallMSGraph('
(1357,10): run-time error CSS1025: Expected comma or open brace, found 'acquireTokenPopupAndCallMSGraph('
(1374,10): run-time error CSS1031: Expected selector, found 'graphAPICallback('
(1374,10): run-time error CSS1025: Expected comma or open brace, found 'graphAPICallback('
(1398,10): run-time error CSS1031: Expected selector, found 'acquireTokenRedirectCallBack('
(1398,10): run-time error CSS1025: Expected comma or open brace, found 'acquireTokenRedirectCallBack('
(1406,10): run-time error CSS1031: Expected selector, found 'callMSGraph('
(1406,10): run-time error CSS1025: Expected comma or open brace, found 'callMSGraph('
(1432,10): run-time error CSS1031: Expected selector, found 'ProcessRegistrationForSignInWithGraph('
(1432,10): run-time error CSS1025: Expected comma or open brace, found 'ProcessRegistrationForSignInWithGraph('
(1476,10): run-time error CSS1031: Expected selector, found 'RegisterProspectForGraph('
(1476,10): run-time error CSS1025: Expected comma or open brace, found 'RegisterProspectForGraph('
(1506,10): run-time error CSS1031: Expected selector, found 'storeDeviceToken('
(1506,10): run-time error CSS1025: Expected comma or open brace, found 'storeDeviceToken('
(1524,16): run-time error CSS1031: Expected selector, found '='
(1524,16): run-time error CSS1025: Expected comma or open brace, found '='
(1534,1): run-time error CSS1019: Unexpected token, found '$'
(1534,2): run-time error CSS1019: Unexpected token, found '('
(1534,9): run-time error CSS1031: Expected selector, found ')'
(1534,9): run-time error CSS1025: Expected comma or open brace, found ')'
(1537,2): run-time error CSS1019: Unexpected token, found ')'
(1539,1): run-time error CSS1019: Unexpected token, found '$'
(1539,29): run-time error CSS1031: Expected selector, found '='
(1539,29): run-time error CSS1025: Expected comma or open brace, found '='
(1544,1): run-time error CSS1019: Unexpected token, found '$'
(1544,33): run-time error CSS1031: Expected selector, found '='
(1544,33): run-time error CSS1025: Expected comma or open brace, found '='
(1548,22): run-time error CSS1031: Expected selector, found ';'
(1548,22): run-time error CSS1025: Expected comma or open brace, found ';'
(1549,22): run-time error CSS1031: Expected selector, found ';'
(1549,22): run-time error CSS1025: Expected comma or open brace, found ';'
(1550,12): run-time error CSS1031: Expected selector, found '='
(1550,12): run-time error CSS1025: Expected comma or open brace, found '='
(1551,18): run-time error CSS1031: Expected selector, found '='
(1551,18): run-time error CSS1025: Expected comma or open brace, found '='
(1552,18): run-time error CSS1031: Expected selector, found '='
(1552,18): run-time error CSS1025: Expected comma or open brace, found '='
(1553,26): run-time error CSS1031: Expected selector, found ';'
(1553,26): run-time error CSS1025: Expected comma or open brace, found ';'
(1554,21): run-time error CSS1031: Expected selector, found '='
(1554,21): run-time error CSS1025: Expected comma or open brace, found '='
(1555,18): run-time error CSS1031: Expected selector, found ';'
(1555,18): run-time error CSS1025: Expected comma or open brace, found ';'
(1557,10): run-time error CSS1031: Expected selector, found 'ProjectStats('
(1557,10): run-time error CSS1025: Expected comma or open brace, found 'ProjectStats('
(1863,28): run-time error CSS1031: Expected selector, found '='
(1863,28): run-time error CSS1025: Expected comma or open brace, found '='
(1888,10): run-time error CSS1031: Expected selector, found 'RemoveDupicateItems('
(1888,10): run-time error CSS1025: Expected comma or open brace, found 'RemoveDupicateItems('
(1900,22): run-time error CSS1031: Expected selector, found '='
(1900,22): run-time error CSS1025: Expected comma or open brace, found '='
(1907,10): run-time error CSS1031: Expected selector, found 'InsertToProjectStats('
(1907,10): run-time error CSS1025: Expected comma or open brace, found 'InsertToProjectStats('
(1934,10): run-time error CSS1031: Expected selector, found 'InsertToStats('
(1934,10): run-time error CSS1025: Expected comma or open brace, found 'InsertToStats('
(1963,10): run-time error CSS1031: Expected selector, found 'InsertToGoogleAnalytics('
(1963,10): run-time error CSS1025: Expected comma or open brace, found 'InsertToGoogleAnalytics('
(1982,10): run-time error CSS1031: Expected selector, found 'InsertListToProjectStats('
(1982,10): run-time error CSS1025: Expected comma or open brace, found 'InsertListToProjectStats('
(2005,10): run-time error CSS1031: Expected selector, found 'resizeImg('
(2005,10): run-time error CSS1025: Expected comma or open brace, found 'resizeImg('
(2024,16): run-time error CSS1031: Expected selector, found '='
(2024,16): run-time error CSS1025: Expected comma or open brace, found '='
(2026,4): run-time error CSS1031: Expected selector, found '('
(2026,4): run-time error CSS1025: Expected comma or open brace, found '('
(2042,5): run-time error CSS1062: Expected semicolon or closing curly-brace, found '$'
(2046,19): run-time error CSS1031: Expected selector, found ';'
(2046,19): run-time error CSS1025: Expected comma or open brace, found ';'
(2048,1): run-time error CSS1019: Unexpected token, found '$'
(2048,2): run-time error CSS1019: Unexpected token, found '('
(2048,3): run-time error CSS1019: Unexpected token, found '".fullscreenVidIcon"'
(2048,23): run-time error CSS1019: Unexpected token, found ')'
(2048,25): run-time error CSS1030: Expected identifier, found 'click('
(2048,25): run-time error CSS1019: Unexpected token, found 'click('
(2048,40): run-time error CSS1031: Expected selector, found '('
(2048,40): run-time error CSS1025: Expected comma or open brace, found '('
(2051,2): run-time error CSS1019: Unexpected token, found ')'
(2053,10): run-time error CSS1031: Expected selector, found 'galleryPrev('
(2053,10): run-time error CSS1025: Expected comma or open brace, found 'galleryPrev('
(2102,10): run-time error CSS1031: Expected selector, found 'galleryNext('
(2102,10): run-time error CSS1025: Expected comma or open brace, found 'galleryNext('
(2153,10): run-time error CSS1031: Expected selector, found 'InsertAgentListToProjectStats('
(2153,10): run-time error CSS1025: Expected comma or open brace, found 'InsertAgentListToProjectStats('
(2174,15): run-time error CSS1031: Expected selector, found '='
(2174,15): run-time error CSS1025: Expected comma or open brace, found '='
(2190,17): run-time error CSS1031: Expected selector, found '='
(2190,17): run-time error CSS1025: Expected comma or open brace, found '='
(2191,23): run-time error CSS1031: Expected selector, found '='
(2191,23): run-time error CSS1025: Expected comma or open brace, found '='
(2192,18): run-time error CSS1031: Expected selector, found '='
(2192,18): run-time error CSS1025: Expected comma or open brace, found '='
(2193,17): run-time error CSS1031: Expected selector, found '='
(2193,17): run-time error CSS1025: Expected comma or open brace, found '='
(2194,17): run-time error CSS1031: Expected selector, found '='
(2194,17): run-time error CSS1025: Expected comma or open brace, found '='
(2195,18): run-time error CSS1031: Expected selector, found '='
(2195,18): run-time error CSS1025: Expected comma or open brace, found '='
(2196,25): run-time error CSS1031: Expected selector, found '='
(2196,25): run-time error CSS1025: Expected comma or open brace, found '='
(2197,1): run-time error CSS1019: Unexpected token, found '$'
(2197,2): run-time error CSS1019: Unexpected token, found '('
(2197,9): run-time error CSS1031: Expected selector, found ')'
(2197,9): run-time error CSS1025: Expected comma or open brace, found ')'
(2205,2): run-time error CSS1019: Unexpected token, found ')'
(2207,1): run-time error CSS1019: Unexpected token, found '$'
(2207,2): run-time error CSS1019: Unexpected token, found '('
(2207,11): run-time error CSS1031: Expected selector, found ')'
(2207,11): run-time error CSS1025: Expected comma or open brace, found ')'
(2281,2): run-time error CSS1019: Unexpected token, found ')'
(2283,26): run-time error CSS1031: Expected selector, found '='
(2283,26): run-time error CSS1025: Expected comma or open brace, found '='
(2316,10): run-time error CSS1031: Expected selector, found 'onShareClick('
(2316,10): run-time error CSS1025: Expected comma or open brace, found 'onShareClick('
(2323,10): run-time error CSS1031: Expected selector, found 'OpenLoginBottomLinePage('
(2323,10): run-time error CSS1025: Expected comma or open brace, found 'OpenLoginBottomLinePage('
(2327,10): run-time error CSS1031: Expected selector, found 'CloseFancyAndOpenLogin('
(2327,10): run-time error CSS1025: Expected comma or open brace, found 'CloseFancyAndOpenLogin('
(2336,10): run-time error CSS1031: Expected selector, found 'CloseMagnificBox('
(2336,10): run-time error CSS1025: Expected comma or open brace, found 'CloseMagnificBox('
(2339,10): run-time error CSS1031: Expected selector, found 'OpenThanksForSharingPopup('
(2339,10): run-time error CSS1025: Expected comma or open brace, found 'OpenThanksForSharingPopup('
(2343,10): run-time error CSS1031: Expected selector, found 'OpenOnlyThanksPopup('
(2343,10): run-time error CSS1025: Expected comma or open brace, found 'OpenOnlyThanksPopup('
(2347,10): run-time error CSS1031: Expected selector, found 'OpenLoginPopup('
(2347,10): run-time error CSS1025: Expected comma or open brace, found 'OpenLoginPopup('
(2350,10): run-time error CSS1031: Expected selector, found 'PostFollowMessageOnFaceBook('
(2350,10): run-time error CSS1025: Expected comma or open brace, found 'PostFollowMessageOnFaceBook('
(2374,10): run-time error CSS1031: Expected selector, found 'PostFollowMessageOnTwitter('
(2374,10): run-time error CSS1025: Expected comma or open brace, found 'PostFollowMessageOnTwitter('
(2379,10): run-time error CSS1031: Expected selector, found 'PostFollowMessageOnFaceBook2('
(2379,10): run-time error CSS1025: Expected comma or open brace, found 'PostFollowMessageOnFaceBook2('
(2416,10): run-time error CSS1031: Expected selector, found 'OnlySendEmailAndForProspect('
(2416,10): run-time error CSS1025: Expected comma or open brace, found 'OnlySendEmailAndForProspect('
(2437,10): run-time error CSS1031: Expected selector, found 'GetHasLeadsForProspect('
(2437,10): run-time error CSS1025: Expected comma or open brace, found 'GetHasLeadsForProspect('
(2466,10): run-time error CSS1031: Expected selector, found 'SendEmailAndGetHasLeadsForProspect('
(2466,10): run-time error CSS1025: Expected comma or open brace, found 'SendEmailAndGetHasLeadsForProspect('
(2496,10): run-time error CSS1031: Expected selector, found 'OpenSocialWindow('
(2496,10): run-time error CSS1025: Expected comma or open brace, found 'OpenSocialWindow('
(2548,10): run-time error CSS1031: Expected selector, found 'adjustPlaceholder('
(2548,10): run-time error CSS1025: Expected comma or open brace, found 'adjustPlaceholder('
(2569,1): run-time error CSS1019: Unexpected token, found '$'
(2569,2): run-time error CSS1019: Unexpected token, found '('
(2569,11): run-time error CSS1031: Expected selector, found ')'
(2569,11): run-time error CSS1025: Expected comma or open brace, found ')'
(2589,2): run-time error CSS1019: Unexpected token, found ')'
(2591,10): run-time error CSS1031: Expected selector, found 'validateEmail('
(2591,10): run-time error CSS1025: Expected comma or open brace, found 'validateEmail('
(3822,88): run-time error CSS1002: Unterminated string: '-]{1,30}$/;
(3824,142): run-time error CSS1002: Unterminated string: '-]{1,30}$/;
(7113,57): run-time error CSS1002: Unterminated string: ':~^{}#&%*? "<>\[\]|\/\\\\].*$/;
 */
/*! Drum.JS - v0.1dev - 2014-01-09
 * http://mb.aquarius.uberspace.de/drum.js
 *
 * Copyright (c) 2013 Marcel Bretschneider <marcel.bretschneider@gmail.com>;
 * Licensed under the MIT license */

(function($) {
	"use strict";

	var DrumIcon = (function () {
		var svgelem = function (tagName) {
			return document.createElementNS("http://www.w3.org/2000/svg", tagName);
		};
		var svgcanvas = function (width, height) {
			var svg = $(svgelem("svg"));
			$(svg).attr("width", width);
			$(svg).attr("height", height);

			var g = $(svgelem("g"));
			$(svg).append(g);

			return svg;
		};
		var container = function (className) {
			var container = document.createElement("div");
			$(container).attr("class", className);
			var inner = document.createElement("div");
			$(container).append(inner);
			return container;
		};
		var path = function (settings) {
			var p = $(svgelem("path"));
			var styles = {
				"fill" : "none",
				"stroke" : settings.dail_stroke_color,
				"stroke-width" : settings.dail_stroke_width + "px",
				"stroke-linecap" : "butt",
				"stroke-linejoin" : "miter",
				"stroke-opacity": "1"
			};
			var style = "";
			for (var i in styles) {
				$(p).attr(i, styles[i]);
			}
			return p;
		};
		return {
			up : function (settings) {
				var width = settings.dail_w;
				var height = settings.dail_h;

				var svg = svgcanvas(width, height);
				var p = path(settings); 

				$(p).attr("d", "m0," + (height + settings.dail_stroke_width) + "l" + (width/2) + ",-" + height + "l" + (width/2) + "," + height);
				$(svg).find("g").append(p);

				var cont = container("dial up");
				$(cont).find("div").append(svg);
				return cont;
			},
			down : function (settings) {
				var width = settings.dail_w;
				var height = settings.dail_h;

				var svg = svgcanvas(width, height);
				var p = path(settings); 

				$(p).attr("d", "m0,-" + settings.dail_stroke_width + "l" + (width/2) + "," + height + "l" + (width/2) + ",-" + height);
				$(svg).find("g").append(p);

				var cont = container("dial down");
				$(cont).find("div").append(svg);
				return cont;
			}
		};
	})();

	var PanelModel = function (index, data_index, settings) 
	{
		this.index = index;
		this.dataModel = new (function (data, i) {
			this.data = data;
			this.index = i;
			this.getText = function () {
				return this.data[this.index];
			};
		})(settings.data, data_index);

		this.init = function () {
			this.angle = settings.theta * index;
			this.elem = document.createElement('figure');
			$(this.elem).addClass('a' + this.angle*100);
			$(this.elem).css('opacity', '0.5');
			$(this.elem).css(
				settings.transformProp, 
				settings.rotateFn + '(' + -this.angle + 'deg) translateZ(' + settings.radius + 'px)'
			);
			this.setText();
		};
		this.setText = function () {
			$(this.elem).text(this.dataModel.getText());
		};
		this.update = function (data_index) {
			if (this.dataModel.index != data_index) {
				this.dataModel.index = data_index;
				this.setText();
			}
		};
	};

	var Drum = function(element, options, transformProp)
	{
		var HTMLselect = ($(element))[0];
		var obj = this;
		var settings = $.extend({
			panelCount : 16,
			rotateFn : 'rotateX',
			interactive: true,
			dail_w: 20,
			dail_h: 5,
			dail_stroke_color: '#999999',
			dail_stroke_width: 1
		}, options || {});

		settings.transformProp = transformProp;
		settings.rotation = 0;
		settings.distance = 0;
		settings.last_angle = 0;
		settings.theta = 360 / settings.panelCount;

		settings.initselect = HTMLselect.selectedIndex;

		settings.data = [];
		for (var i=0; i<HTMLselect.children.length; i++) {
			settings.data.push($(HTMLselect.children[i]).text());
		}

		$(element).hide();

		var wrapper = document.createElement( "div" );
		$(wrapper).addClass("drum-wrapper");
		
		if (settings.id)
			$(wrapper).attr('id', settings.id);
		else if (HTMLselect.id)
			$(wrapper).attr('id', 'drum_' + HTMLselect.id);
		else if ($(HTMLselect).attr('name'))
			$(wrapper).attr('id', 'drum_' + $(HTMLselect).attr('name'));

		$(HTMLselect).after(wrapper);

		var inner = document.createElement("div");
		$(inner).addClass("inner");
		$(inner).appendTo(wrapper);

		var container = document.createElement( "div" );
		$(container).addClass("container");		
		$(container).appendTo(inner);

		var drum = document.createElement( "div" );
		$(drum).addClass("drum");
		$(drum).appendTo(container);

		if (settings.interactive === true) {
			var dialUp = DrumIcon.up(settings);
			$(wrapper).append(dialUp);

			var dialDown = DrumIcon.down(settings);
			$(wrapper).append(dialDown);

            //Don't Show and Disable the click function for up and down
			//$(wrapper).hover(function () {
			//	$(this).find(".up").show();
			//	$(this).find(".down").show();
			//}, function () {
			//	$(this).find(".up").hide();
			//	$(this).find(".down").hide();
			//});
		}

		settings.radius = 75; //Math.round( ( $(drum).height() / 2 ) / Math.tan( Math.PI / settings.panelCount ) );
		settings.mapping = [];
		var c = 0;
		for (var i=0; i < settings.panelCount; i++) {
			if (settings.data.length == i) break;
			var j = c;
			if (c >= (settings.panelCount / 2)) {
				j = settings.data.length - (settings.panelCount - c);
			}
			c++;

			var panel = new PanelModel(i, j, settings);
			panel.init();
			settings.mapping.push(panel);

			$(drum).append(panel.elem);
		}

		var getNearest = function (deg) {

			deg = deg || settings.rotation;
			var th = (settings.theta / 2);
			var n = 360;
			var angle = ((deg + th) % n + n) % n;
			angle = angle - angle % settings.theta;
			var l = (settings.data.length - 1) * settings.theta;
			if (angle > l) {
				if (deg > 0) return l;
				else return 0;
			}
			return angle;
		};
		var getSelected = function () {
			var nearest = getNearest();
			for (var i in settings.mapping) {
				if (settings.mapping[i].angle == nearest) {
					return settings.mapping[i];
				}
			}
		};
		var update = function (selected) {
			var c, list = [], pc = settings.panelCount, ph = settings.panelCount / 2, l = settings.data.length;
			var i = selected.index; 
			var j = selected.dataModel.index;
			for (var k=j-ph; k<=j+ph-1; k++) {
				c = k;
				if (k < 0) c = l+k;
				if (k > l-1) c = k-l;
				list.push(c);
			}
			var t = list.slice(ph-i); 
			list = t.concat(list.slice(0, pc - t.length));
			for (var i=0; i<settings.mapping.length; i++) {
				settings.mapping[i].update(list[i]);
			}

			
		};
		var transform = function () {
            
		    if (navigator.userAgent.indexOf('MSIE') !== -1
                || navigator.appVersion.indexOf('Trident/') > 0) {
		        $(drum).css(settings.transformProp, 'translateZ(-' + settings.radius + 'px) ' + settings.rotateFn + '(0deg)');
		    }
            else
			$(drum).css(settings.transformProp, 'translateZ(-' + settings.radius + 'px) ' + settings.rotateFn + '(' + settings.rotation + 'deg)');

			var selected = getSelected();
			if (selected) {
				var data = selected.dataModel;
				
				var last_index = HTMLselect.selectedIndex;
				HTMLselect.selectedIndex = data.index;

				if (last_index != data.index && settings.onChange) 
					settings.onChange(HTMLselect);

				$(selected.elem).css("opacity", 1);
				$("figure:not(.a" + (selected.angle*100) + ", .hidden)", drum).css("opacity", "0.5");
				if (selected.angle != settings.last_angle) {
					settings.last_angle = selected.angle;
					update(selected);


					if (navigator.userAgent.indexOf('MSIE') !== -1
                        || navigator.appVersion.indexOf('Trident/') > 0) {
					    $(selected.elem).parent().attr('style', 'transform: translateZ(-75px) rotateX(0deg);')

					    var elementstyle = $(selected.elem).attr('style');    //"opacity: 0.5; transform: rotateX(0deg) translateZ(75px);,"
					    var elementRotateX = elementstyle.substring(elementstyle.indexOf('rotateX(') + 8, elementstyle.indexOf('deg'));
					    elementRotateX *= -1;
					    $(selected.elem).attr('style', 'opacity: 1; transform: rotateX(0deg) translateZ(75px);');

					    $($(selected.elem).parent().find("figure")).each(function (index, value) {
					        //console.log('div' + index + ' :' + $(this).attr('style'));
					        if ($(this).css('opacity') != 1) {
					            // console.log("noral");
					            var otherelementstyle = $(this).attr('style');
					            var otherelementRotateX = otherelementstyle.substring(otherelementstyle.indexOf('rotateX(') + 8, otherelementstyle.indexOf('deg'));
					            var angle = parseFloat(otherelementRotateX) + parseFloat(elementRotateX);
					            // console.log(index + ',style=' + otherelementstyle + ',rotatex=' + otherelementRotateX + ',angle=' + angle);
					            $(this).attr('style', 'opacity: 0.5; transform: rotateX(' + angle + 'deg) translateZ(75px);');
					        }
					    });
					}
				}
			}			
		};
		this.setIndex = function (dataindex) {
			var page = Math.floor(dataindex / settings.panelCount);
			var index = dataindex - (page * settings.panelCount);
			var selected = new PanelModel(index, dataindex, settings);
			update(selected);
			settings.rotation = index * settings.theta;
			transform();
		};

		this.setIndex(settings.initselect);

		this.getIndex = function () {
			return getSelected().dataModel.index;
		};

		if (typeof(Hammer) != "undefined") {
			settings.touch = new Hammer(wrapper, {
				prevent_default: true,
				no_mouseevents: true
			});
			
			settings.touch.on("dragstart", function (e) { 
				settings.distance = 0;
			});

			settings.touch.on("drag", function (e) {
			    var evt = ["up", "down"];
			    if ((navigator.userAgent.indexOf('MSIE') !== -1
                    || navigator.appVersion.indexOf('Trident/') > 0)) {
			        transform();
			        $('.drum').attr("style", "transform: translateZ(-75px) rotateX(0deg);");
			    }
			    else {
			        if (evt.indexOf(e.gesture.direction) >= 0) {
			            e.gesture.deltaY = e.gesture.deltaY < -135 ? -135 : e.gesture.deltaY;//Lower Range: 6 items * 22.5
			            e.gesture.deltaY = e.gesture.deltaY > 135 ? 135 : e.gesture.deltaY;//Upper Range: 6 items * 22.5
			            settings.rotation += Math.round(e.gesture.deltaY - settings.distance) * -1;
			            transform();
			            settings.distance = e.gesture.deltaY;
			        }
			    }
			});

			settings.touch.on("dragend", function (e) {
				settings.rotation = getNearest();
				transform();
			});
		}

		if (settings.interactive) {
			$(dialUp).click(function (e) {
				var deg = settings.rotation + settings.theta + 1;
				settings.rotation = getNearest(deg);
				transform();
			});
			$(dialDown).click(function (e) {
				var deg = settings.rotation - settings.theta - 1;
				settings.rotation = getNearest(deg);
				transform();
			});			
		}
	};

	var methods = {
		getIndex : function () {
			if ($(this).data('drum'))
				return $(this).data('drum').getIndex();
			return false;
		},
		setIndex : function (index) {
			if ($(this).data('drum'))
				$(this).data('drum').setIndex(index);
		},
		init : function (options) {
			var transformProp = false;
			var prefixes = 'transform WebkitTransform MozTransform OTransform msTransform'.split(' ');
			for(var i = 0; i < prefixes.length; i++) {
				if(document.createElement('div').style[prefixes[i]] !== undefined) {
					transformProp = prefixes[i];
				}
			}
			if (transformProp) {
				var element = $(this);
				if (!element.data('drum')) {
					var drum = new Drum(element, options, transformProp);
					element.data('drum', drum);
				}
			}
		}
	};

	$.fn.drum = function(methodOrOptions)
	{
		var _arguments = arguments;
		return this.each(function() {
			if ( methods[methodOrOptions] ) {
				return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( _arguments, 1 ));
			} else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) {
				return methods.init.apply( this, _arguments );
			} else {
				$.error( 'Method ' +  methodOrOptions + ' does not exist on jQuery.drum' );
			}
		});
	};
})(jQuery);
/*! Hammer.JS - v1.0.6dev - 2013-12-14
 * http://eightmedia.github.com/hammer.js
 *
 * Copyright (c) 2013 Jorik Tangelder <j.tangelder@gmail.com>;
 * Licensed under the MIT license */

!function (a, b) { "use strict"; function c() { d.READY || (d.event.determineEventTypes(), d.utils.each(d.gestures, function (a) { d.detection.register(a) }), d.event.onTouch(d.DOCUMENT, d.EVENT_MOVE, d.detection.detect), d.event.onTouch(d.DOCUMENT, d.EVENT_END, d.detection.detect), d.READY = !0) } var d = function (a, b) { return new d.Instance(a, b || {}) }; d.defaults = { stop_browser_behavior: { userSelect: "none", touchAction: "none", touchCallout: "none", contentZooming: "none", userDrag: "none", tapHighlightColor: "rgba(0,0,0,0)" } }, d.HAS_POINTEREVENTS = a.navigator.pointerEnabled || a.navigator.msPointerEnabled, d.HAS_TOUCHEVENTS = "ontouchstart" in a, d.MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android|silk/i, d.NO_MOUSEEVENTS = d.HAS_TOUCHEVENTS && a.navigator.userAgent.match(d.MOBILE_REGEX), d.EVENT_TYPES = {}, d.DIRECTION_DOWN = "down", d.DIRECTION_LEFT = "left", d.DIRECTION_UP = "up", d.DIRECTION_RIGHT = "right", d.POINTER_MOUSE = "mouse", d.POINTER_TOUCH = "touch", d.POINTER_PEN = "pen", d.EVENT_START = "start", d.EVENT_MOVE = "move", d.EVENT_END = "end", d.DOCUMENT = a.document, d.plugins = d.plugins || {}, d.gestures = d.gestures || {}, d.READY = !1, d.utils = { extend: function (a, c, d) { for (var e in c) a[e] !== b && d || (a[e] = c[e]); return a }, each: function (a, c, d) { var e, f; if ("forEach" in a) a.forEach(c, d); else if (a.length !== b) { for (e = 0, f = a.length; f > e; e++) if (c.call(d, a[e], e, a) === !1) return } else for (e in a) if (a.hasOwnProperty(e) && c.call(d, a[e], e, a) === !1) return }, hasParent: function (a, b) { for (; a;) { if (a == b) return !0; a = a.parentNode } return !1 }, getCenter: function (a) { var b = [], c = []; return d.utils.each(a, function (a) { b.push("undefined" != typeof a.clientX ? a.clientX : a.pageX), c.push("undefined" != typeof a.clientY ? a.clientY : a.pageY) }), { pageX: (Math.min.apply(Math, b) + Math.max.apply(Math, b)) / 2, pageY: (Math.min.apply(Math, c) + Math.max.apply(Math, c)) / 2 } }, getVelocity: function (a, b, c) { return { x: Math.abs(b / a) || 0, y: Math.abs(c / a) || 0 } }, getAngle: function (a, b) { var c = b.pageY - a.pageY, d = b.pageX - a.pageX; return 180 * Math.atan2(c, d) / Math.PI }, getDirection: function (a, b) { var c = Math.abs(a.pageX - b.pageX), e = Math.abs(a.pageY - b.pageY); return c >= e ? a.pageX - b.pageX > 0 ? d.DIRECTION_LEFT : d.DIRECTION_RIGHT : a.pageY - b.pageY > 0 ? d.DIRECTION_UP : d.DIRECTION_DOWN }, getDistance: function (a, b) { var c = b.pageX - a.pageX, d = b.pageY - a.pageY; return Math.sqrt(c * c + d * d) }, getScale: function (a, b) { return a.length >= 2 && b.length >= 2 ? this.getDistance(b[0], b[1]) / this.getDistance(a[0], a[1]) : 1 }, getRotation: function (a, b) { return a.length >= 2 && b.length >= 2 ? this.getAngle(b[1], b[0]) - this.getAngle(a[1], a[0]) : 0 }, isVertical: function (a) { return a == d.DIRECTION_UP || a == d.DIRECTION_DOWN }, stopDefaultBrowserBehavior: function (a, b) { b && a && a.style && (d.utils.each(["webkit", "khtml", "moz", "Moz", "ms", "o", ""], function (c) { d.utils.each(b, function (b) { c && (b = c + b.substring(0, 1).toUpperCase() + b.substring(1)), b in a.style && (a.style[b] = b) }) }), "none" == b.userSelect && (a.onselectstart = function () { return !1 }), "none" == b.userDrag && (a.ondragstart = function () { return !1 })) } }, d.Instance = function (a, b) { var e = this; return c(), this.element = a, this.enabled = !0, this.options = d.utils.extend(d.utils.extend({}, d.defaults), b || {}), this.options.stop_browser_behavior && d.utils.stopDefaultBrowserBehavior(this.element, this.options.stop_browser_behavior), d.event.onTouch(a, d.EVENT_START, function (a) { e.enabled && d.detection.startDetect(e, a) }), this }, d.Instance.prototype = { on: function (a, b) { var c = a.split(" "); return d.utils.each(c, function (a) { this.element.addEventListener(a, b, !1) }, this), this }, off: function (a, b) { var c = a.split(" "); return d.utils.each(c, function (a) { this.element.removeEventListener(a, b, !1) }, this), this }, trigger: function (a, b) { b || (b = {}); var c = d.DOCUMENT.createEvent("Event"); c.initEvent(a, !0, !0), c.gesture = b; var e = this.element; return d.utils.hasParent(b.target, e) && (e = b.target), e.dispatchEvent(c), this }, enable: function (a) { return this.enabled = a, this } }; var e = null, f = !1, g = !1; d.event = { bindDom: function (a, b, c) { var e = b.split(" "); d.utils.each(e, function (b) { a.addEventListener(b, c, !1) }) }, onTouch: function (a, b, c) { var h = this; this.bindDom(a, d.EVENT_TYPES[b], function (i) { var j = i.type.toLowerCase(); if (!j.match(/mouse/) || !g) { j.match(/touch/) || j.match(/pointerdown/) || j.match(/mouse/) && 1 === i.which ? f = !0 : j.match(/mouse/) && !i.which && (f = !1), j.match(/touch|pointer/) && (g = !0); var k = 0; f && (d.HAS_POINTEREVENTS && b != d.EVENT_END ? k = d.PointerEvent.updatePointer(b, i) : j.match(/touch/) ? k = i.touches.length : g || (k = j.match(/up/) ? 0 : 1), k > 0 && b == d.EVENT_END ? b = d.EVENT_MOVE : k || (b = d.EVENT_END), (k || null === e) && (e = i), c.call(d.detection, h.collectEventData(a, b, h.getTouchList(e, b), i)), d.HAS_POINTEREVENTS && b == d.EVENT_END && (k = d.PointerEvent.updatePointer(b, i))), k || (e = null, f = !1, g = !1, d.PointerEvent.reset()) } }) }, determineEventTypes: function () { var a; a = d.HAS_POINTEREVENTS ? d.PointerEvent.getEvents() : d.NO_MOUSEEVENTS ? ["touchstart", "touchmove", "touchend touchcancel"] : ["touchstart mousedown", "touchmove mousemove", "touchend touchcancel mouseup"], d.EVENT_TYPES[d.EVENT_START] = a[0], d.EVENT_TYPES[d.EVENT_MOVE] = a[1], d.EVENT_TYPES[d.EVENT_END] = a[2] }, getTouchList: function (a) { return d.HAS_POINTEREVENTS ? d.PointerEvent.getTouchList() : a.touches ? a.touches : (a.indentifier = 1, [a]) }, collectEventData: function (a, b, c, e) { var f = d.POINTER_TOUCH; return (e.type.match(/mouse/) || d.PointerEvent.matchType(d.POINTER_MOUSE, e)) && (f = d.POINTER_MOUSE), { center: d.utils.getCenter(c), timeStamp: (new Date).getTime(), target: e.target, touches: c, eventType: b, pointerType: f, srcEvent: e, preventDefault: function () { this.srcEvent.preventManipulation && this.srcEvent.preventManipulation(), this.srcEvent.preventDefault && this.srcEvent.preventDefault() }, stopPropagation: function () { this.srcEvent.stopPropagation() }, stopDetect: function () { return d.detection.stopDetect() } } } }, d.PointerEvent = { pointers: {}, getTouchList: function () { var a = this, b = []; return d.utils.each(a.pointers, function (a) { b.push(a) }), b }, updatePointer: function (a, b) { return a == d.EVENT_END ? this.pointers = {} : (b.identifier = b.pointerId, this.pointers[b.pointerId] = b), Object.keys(this.pointers).length }, matchType: function (a, b) { if (!b.pointerType) return !1; var c = b.pointerType, e = {}; return e[d.POINTER_MOUSE] = c === b.MSPOINTER_TYPE_MOUSE || c === d.POINTER_MOUSE, e[d.POINTER_TOUCH] = c === b.MSPOINTER_TYPE_TOUCH || c === d.POINTER_TOUCH, e[d.POINTER_PEN] = c === b.MSPOINTER_TYPE_PEN || c === d.POINTER_PEN, e[a] }, getEvents: function () { return ["pointerdown MSPointerDown", "pointermove MSPointerMove", "pointerup pointercancel MSPointerUp MSPointerCancel"] }, reset: function () { this.pointers = {} } }, d.detection = { gestures: [], current: null, previous: null, stopped: !1, startDetect: function (a, b) { this.current || (this.stopped = !1, this.current = { inst: a, startEvent: d.utils.extend({}, b), lastEvent: !1, name: "" }, this.detect(b)) }, detect: function (a) { if (this.current && !this.stopped) { a = this.extendEventData(a); var b = this.current.inst.options; return d.utils.each(this.gestures, function (c) { return this.stopped || b[c.name] === !1 || c.handler.call(c, a, this.current.inst) !== !1 ? void 0 : (this.stopDetect(), !1) }, this), this.current && (this.current.lastEvent = a), a.eventType == d.EVENT_END && !a.touches.length - 1 && this.stopDetect(), a } }, stopDetect: function () { this.previous = d.utils.extend({}, this.current), this.current = null, this.stopped = !0 }, extendEventData: function (a) { var b = this.current.startEvent; !b || a.touches.length == b.touches.length && a.touches !== b.touches || (b.touches = [], d.utils.each(a.touches, function (a) { b.touches.push(d.utils.extend({}, a)) })); var c, e, f = a.timeStamp - b.timeStamp, g = a.center.pageX - b.center.pageX, h = a.center.pageY - b.center.pageY, i = d.utils.getVelocity(f, g, h); return "end" === a.eventType ? (c = this.current.lastEvent && this.current.lastEvent.interimAngle, e = this.current.lastEvent && this.current.lastEvent.interimDirection) : (c = this.current.lastEvent && d.utils.getAngle(this.current.lastEvent.center, a.center), e = this.current.lastEvent && d.utils.getDirection(this.current.lastEvent.center, a.center)), d.utils.extend(a, { deltaTime: f, deltaX: g, deltaY: h, velocityX: i.x, velocityY: i.y, distance: d.utils.getDistance(b.center, a.center), angle: d.utils.getAngle(b.center, a.center), interimAngle: c, direction: d.utils.getDirection(b.center, a.center), interimDirection: e, scale: d.utils.getScale(b.touches, a.touches), rotation: d.utils.getRotation(b.touches, a.touches), startEvent: b }), a }, register: function (a) { var c = a.defaults || {}; return c[a.name] === b && (c[a.name] = !0), d.utils.extend(d.defaults, c, !0), a.index = a.index || 1e3, this.gestures.push(a), this.gestures.sort(function (a, b) { return a.index < b.index ? -1 : a.index > b.index ? 1 : 0 }), this.gestures } }, d.gestures.Drag = { name: "drag", index: 50, defaults: { drag_min_distance: 10, correct_for_drag_min_distance: !0, drag_max_touches: 1, drag_block_horizontal: !1, drag_block_vertical: !1, drag_lock_to_axis: !1, drag_lock_min_distance: 25 }, triggered: !1, handler: function (a, b) { if (d.detection.current.name != this.name && this.triggered) return b.trigger(this.name + "end", a), this.triggered = !1, void 0; if (!(b.options.drag_max_touches > 0 && a.touches.length > b.options.drag_max_touches)) switch (a.eventType) { case d.EVENT_START: this.triggered = !1; break; case d.EVENT_MOVE: if (a.distance < b.options.drag_min_distance && d.detection.current.name != this.name) return; if (d.detection.current.name != this.name && (d.detection.current.name = this.name, b.options.correct_for_drag_min_distance && a.distance > 0)) { var c = Math.abs(b.options.drag_min_distance / a.distance); d.detection.current.startEvent.center.pageX += a.deltaX * c, d.detection.current.startEvent.center.pageY += a.deltaY * c, a = d.detection.extendEventData(a) } (d.detection.current.lastEvent.drag_locked_to_axis || b.options.drag_lock_to_axis && b.options.drag_lock_min_distance <= a.distance) && (a.drag_locked_to_axis = !0); var e = d.detection.current.lastEvent.direction; a.drag_locked_to_axis && e !== a.direction && (a.direction = d.utils.isVertical(e) ? a.deltaY < 0 ? d.DIRECTION_UP : d.DIRECTION_DOWN : a.deltaX < 0 ? d.DIRECTION_LEFT : d.DIRECTION_RIGHT), this.triggered || (b.trigger(this.name + "start", a), this.triggered = !0), b.trigger(this.name, a), b.trigger(this.name + a.direction, a), (b.options.drag_block_vertical && d.utils.isVertical(a.direction) || b.options.drag_block_horizontal && !d.utils.isVertical(a.direction)) && a.preventDefault(); break; case d.EVENT_END: this.triggered && b.trigger(this.name + "end", a), this.triggered = !1 } } }, d.gestures.Hold = { name: "hold", index: 10, defaults: { hold_timeout: 500, hold_threshold: 1 }, timer: null, handler: function (a, b) { switch (a.eventType) { case d.EVENT_START: clearTimeout(this.timer), d.detection.current.name = this.name, this.timer = setTimeout(function () { "hold" == d.detection.current.name && b.trigger("hold", a) }, b.options.hold_timeout); break; case d.EVENT_MOVE: a.distance > b.options.hold_threshold && clearTimeout(this.timer); break; case d.EVENT_END: clearTimeout(this.timer) } } }, d.gestures.Release = { name: "release", index: 1 / 0, handler: function (a, b) { a.eventType == d.EVENT_END && b.trigger(this.name, a) } }, d.gestures.Swipe = { name: "swipe", index: 40, defaults: { swipe_min_touches: 1, swipe_max_touches: 1, swipe_velocity: .7 }, handler: function (a, b) { if (a.eventType == d.EVENT_END) { if (b.options.swipe_max_touches > 0 && a.touches.length < b.options.swipe_min_touches && a.touches.length > b.options.swipe_max_touches) return; (a.velocityX > b.options.swipe_velocity || a.velocityY > b.options.swipe_velocity) && (b.trigger(this.name, a), b.trigger(this.name + a.direction, a)) } } }, d.gestures.Tap = { name: "tap", index: 100, defaults: { tap_max_touchtime: 250, tap_max_distance: 10, tap_always: !0, doubletap_distance: 20, doubletap_interval: 300 }, handler: function (a, b) { if (a.eventType == d.EVENT_END && "touchcancel" != a.srcEvent.type) { var c = d.detection.previous, e = !1; if (a.deltaTime > b.options.tap_max_touchtime || a.distance > b.options.tap_max_distance) return; c && "tap" == c.name && a.timeStamp - c.lastEvent.timeStamp < b.options.doubletap_interval && a.distance < b.options.doubletap_distance && (b.trigger("doubletap", a), e = !0), (!e || b.options.tap_always) && (d.detection.current.name = "tap", b.trigger(d.detection.current.name, a)) } } }, d.gestures.Touch = { name: "touch", index: -1 / 0, defaults: { prevent_default: !1, prevent_mouseevents: !1 }, handler: function (a, b) { return b.options.prevent_mouseevents && a.pointerType == d.POINTER_MOUSE ? (a.stopDetect(), void 0) : (b.options.prevent_default && a.preventDefault(), a.eventType == d.EVENT_START && b.trigger(this.name, a), void 0) } }, d.gestures.Transform = { name: "transform", index: 45, defaults: { transform_min_scale: .01, transform_min_rotation: 1, transform_always_block: !1 }, triggered: !1, handler: function (a, b) { if (d.detection.current.name != this.name && this.triggered) return b.trigger(this.name + "end", a), this.triggered = !1, void 0; if (!(a.touches.length < 2)) switch (b.options.transform_always_block && a.preventDefault(), a.eventType) { case d.EVENT_START: this.triggered = !1; break; case d.EVENT_MOVE: var c = Math.abs(1 - a.scale), e = Math.abs(a.rotation); if (c < b.options.transform_min_scale && e < b.options.transform_min_rotation) return; d.detection.current.name = this.name, this.triggered || (b.trigger(this.name + "start", a), this.triggered = !0), b.trigger(this.name, a), e > b.options.transform_min_rotation && b.trigger("rotate", a), c > b.options.transform_min_scale && (b.trigger("pinch", a), b.trigger("pinch" + (a.scale < 1 ? "in" : "out"), a)); break; case d.EVENT_END: this.triggered && b.trigger(this.name + "end", a), this.triggered = !1 } } }, "function" == typeof define && "object" == typeof define.amd && define.amd ? define(function () { return d }) : "object" == typeof module && "object" == typeof module.exports ? module.exports = d : a.Hammer = d }(this);
//# sourceMappingURL=hammer.min.map
(function(Hammer) {
  /**
   * enable multitouch on the desktop by pressing the shiftkey
   * the other touch goes in the opposite direction so the center keeps at its place
   * it's recommended to enable Hammer.debug.showTouches for this one
   */
  Hammer.plugins.fakeMultitouch = function() {
    // keeps the start position to keep it centered
    var start_pos = false;

    // test for msMaxTouchPoints to enable this for IE10 with only one pointer (a mouse in all/most cases)
    Hammer.HAS_POINTEREVENTS = navigator.msPointerEnabled &&
      navigator.msMaxTouchPoints && navigator.msMaxTouchPoints >= 1;

    /**
     * overwrites Hammer.event.getTouchList.
     * @param   {Event}     ev
     * @param   TOUCHTYPE   type
     * @return  {Array}     Touches
     */
    Hammer.event.getTouchList = function(ev, eventType) {
      // get the fake pointerEvent touchlist
      if(Hammer.HAS_POINTEREVENTS) {
        return Hammer.PointerEvent.getTouchList();
      }
      // get the touchlist
      else if(ev.touches) {
        return ev.touches;
      }

      // reset on start of a new touch
      if(eventType == Hammer.EVENT_START) {
        start_pos = false;
      }

      // when the shift key is pressed, multitouch is possible on desktop
      // why shift? because ctrl and alt are taken by osx and linux
      if(ev.shiftKey) {
        // on touchstart we store the position of the mouse for multitouch
        if(!start_pos) {
          start_pos = {
            pageX: ev.pageX,
            pageY: ev.pageY
          };
        }

        var distance_x = start_pos.pageX - ev.pageX;
        var distance_y = start_pos.pageY - ev.pageY;

        // fake second touch in the opposite direction
        return [
          {
            identifier: 1,
            pageX     : start_pos.pageX - distance_x - 50,
            pageY     : start_pos.pageY - distance_y - -50,
            target    : ev.target
          },
          {
            identifier: 2,
            pageX     : start_pos.pageX + distance_x - -50,
            pageY     : start_pos.pageY + distance_y - 50,
            target    : ev.target
          }
        ];
      }
      // normal single touch
      else {
        start_pos = false;
        return [
          {
            identifier: 1,
            pageX     : ev.pageX,
            pageY     : ev.pageY,
            target    : ev.target
          }
        ];
      }
    };
  };

})(window.Hammer);
var DateDrumHelpers = {
	allMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
	allWeekDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
    htmlTemplate: '<div class="date_wrapper outside">' +
                        '<form>' +
                            '<div class="lines"><span id="weekday" class="weekday"></span></div>' +
                            '<select class="date" name="month"></select>' +
                            '<select class="date" name="day"></select>' +
                            '<select class="date" name="year"></select>' +
                            '<select class="date" name="hours"></select>' +
                            '<select class="date" name="minutes"></select>' +
                            '<select class="date" name="time-am-pm"></select>' +
                        '</form>' +
                    '</div>',
    yearRange: 200,//Should be even, half of it before current date and half of it after
    Pad: function (number) {
        if (number < 10) {
            return '0' + number;
        }
        return number;
	},
	PopulateWeekDayOptions: function () {
		var allOptionHtml = "";
		for (var i = 0; i < DateDrumHelpers.allWeekDays.length; i++) {
			allOptionHtml += "<span data-value=" + i + ">" + DateDrumHelpers.allWeekDays[i] + "</span>";
		}
		return allOptionHtml;
	},
    PopulateMonthOptions: function () {
        var allOptionHtml = "";
        for (var i = 0; i < DateDrumHelpers.allMonths.length; i++) {
            allOptionHtml += "<option value=" + i + ">" + DateDrumHelpers.allMonths[i] + "</option>";
        }
        return allOptionHtml;
    },
    PopulateDayOptions: function () {
        var allOptionHtml = "";
        for (var i = 1; i <= 31; i++) {
            allOptionHtml += "<option value=" + i + ">" + i + "</option>";
        }
        return allOptionHtml;
    },
    PopulateYearOptions: function () {
        var dateTime = new Date();
        var allOptionHtml = "";
        var nYear = dateTime.getFullYear() - DateDrumHelpers.yearRange / 2;
        for (var i = 0; i <= DateDrumHelpers.yearRange; i++) {
            allOptionHtml += "<option value=" + i + ">" + nYear + "</option>";
            nYear++;
        }
        return allOptionHtml;
    },
    PopulateHourOptions: function () {
        var allOptionHtml = "";
        for (var i = 0; i < 24; i++) {
            var ampmHour = (i + 1) % 12;
            if (ampmHour === 0) ampmHour = 12;
            var tempOptionHtml = "<option value=" + ampmHour + ">" + ampmHour + "</option>";
            allOptionHtml += tempOptionHtml;
        }
        return allOptionHtml;
    },
    PopulateMinuteOptions: function () {
        var allOptionHtml = "";
        for (var k = 0; k < 2; k++) {
            for (var i = 0; i < 60; i += 5) {
                var tempOptionHtml = "<option value=" + i + ">" + this.Pad(i) + "</option>";
                allOptionHtml += tempOptionHtml;
            }
        }
        return allOptionHtml;
    },
    PopulateAmPmOptions: function () {
        var allOptionHtml = '<option value="0">AM</option><option value="1">PM</option>';
        return allOptionHtml;
    },
    GetIndexForValue: function ($elem, value) {
        var returnValue = "100";
        $elem.find("option").each(function () {
            if ($(this).text().trim() === value)
                returnValue = $(this).val();
        });
        return returnValue;
    },
    AddFiveMinutes: function (dateTimeObj) {
        var floorDivision = Math.floor(dateTimeObj.getMinutes() / 5);
        var ceilDivision = Math.ceil(dateTimeObj.getMinutes() / 5);
        if (floorDivision === ceilDivision)
            return dateTimeObj;

        dateTimeObj.setMinutes(floorDivision * 5 + 5);
        return dateTimeObj;
    }
};

var IphoneDateTimePicker = function ($dateSection, existingDate, onChangeCallBack) {
    $dateSection.html(DateDrumHelpers.htmlTemplate);

	var $day = $dateSection.find("[name='day']");
	var $weekday = $dateSection.find("#weekday");
    var $month = $dateSection.find("[name='month']");
    var $year = $dateSection.find("[name='year']");
    var $hour = $dateSection.find("[name='hours']");
    var $minute = $dateSection.find("[name='minutes']");
    var $amPm = $dateSection.find("[name='time-am-pm']");

    var calledFromUpdate = false;
    var SelectedDateTimeBySelector = function () {
        var dateString = $day.find("option:selected").text().trim() + " " + $month.find("option:selected").text().trim() + " " + $year.find("option:selected").text().trim() + " " + DateDrumHelpers.Pad($hour.find("option:selected").text().trim()) + ":" + $minute.find("option:selected").text().trim() + ":00 " + $amPm.find("option:selected").text().trim();
        return dateString;
    }
    var UpdateDateTimeWithDrum = function (dateTimeObj, OnlyDateMonth) {
        calledFromUpdate = true;
        dateTimeObj = DateDrumHelpers.AddFiveMinutes(dateTimeObj);
        $day.drum('setIndex', dateTimeObj.getDate() - 1);
        $month.drum('setIndex', dateTimeObj.getMonth());
        if (!OnlyDateMonth) {
            var minutesIndex = Math.ceil(dateTimeObj.getMinutes() / 5);
            var currentAmPmValue = dateTimeObj.getHours() < 12 ? 0 : 1;
            var amPmHour = dateTimeObj.getHours() % 12;
            if (amPmHour === 0) amPmHour = 12;
            $year.drum('setIndex', DateDrumHelpers.GetIndexForValue($year, dateTimeObj.getFullYear().toString()));
            $hour.drum('setIndex', amPmHour - 1);
            $minute.drum('setIndex', minutesIndex);
            $amPm.drum('setIndex', currentAmPmValue);
        }
        calledFromUpdate = false;
    };
    var initDate = new Date();
    var getWeekDay = initDate.getDay();
    var parentSelector = $('#startPauseDateTime, .exclusive-agent .startDate, .exclusive-agent .endDate');
    var UpdateDayofWeek = function (getWeekDay, parentSelector) {
		parentSelector.find('#weekday span').hide();
    	parentSelector.find('[data-value="' + getWeekDay + '"]').show();
    };
    try
    {
        Hammer.plugins.fakeMultitouch();
    }
    catch(e)
    {
		console.log();
	}
	$weekday.html(DateDrumHelpers.PopulateWeekDayOptions());
    $day.html(DateDrumHelpers.PopulateDayOptions());
    $month.html(DateDrumHelpers.PopulateMonthOptions());
    $year.html(DateDrumHelpers.PopulateYearOptions());
    $hour.html(DateDrumHelpers.PopulateHourOptions());
    $minute.html(DateDrumHelpers.PopulateMinuteOptions());
    $amPm.html(DateDrumHelpers.PopulateAmPmOptions());

    var isChanged = false;

    $dateSection.find("[name='day'], [name='month'], [name='year'], [name='hours'], [name='minutes'], [name='time-am-pm']").drum({
        onChange: function (ctrl) {
            if (calledFromUpdate === false) {
                isChanged = true;

                if (onChangeCallBack !== 'undefined' && typeof onChangeCallBack === 'function') {
                    onChangeCallBack();
                }

                if ($(ctrl).attr("name") === "year" || $(ctrl).attr("name") === "day" || $(ctrl).attr("name") === "month") {
                    var date = new Date(SelectedDateTimeBySelector());
                    UpdateDateTimeWithDrum(date, false);
                    UpdateDayofWeek(date.getDay(), $(ctrl).parents('.dvDateForm'));
                }
            }
        }
    });

    var dragmouse = 0;
    $dateSection.find("figure")
        .mousedown(function () {
            dragmouse = 0;
        })
    .mousemove(function () {
        dragmouse = 1;
    });
    $dateSection.find("figure").mouseup(function () {
        if (dragmouse) {
            dragmouse = 0;
            return;
        }
        var $currentList = $(this).parents(".drum-wrapper").prev();
        var currentText = $(this).text().trim();
        var currentIndex = DateDrumHelpers.GetIndexForValue($currentList, currentText);

        if ($currentList.attr("name") === "year" || $currentList.attr("name") === "month" || $currentList.attr("name") === "day") {

            var date = new Date(SelectedDateTimeBySelector());
            if ($currentList.attr("name") === "year") {
                date.setFullYear($(this).text().trim());
            }
            else if ($currentList.attr("name") === "month") {
                date.setMonth(currentIndex);
            }
            else if ($currentList.attr("name") === "day") {
                date.setDate(currentIndex);
            }

            UpdateDateTimeWithDrum(date, false);
            UpdateDayofWeek(date.getDay(), $(this).parents('.dvDateForm'));

            if (onChangeCallBack !== 'undefined' && typeof onChangeCallBack === 'function') {
                onChangeCallBack();
            }

            return;
        }

        if ($currentList.attr("name") === "hours") currentIndex--;
        if ($currentList.attr("name") === "minutes") currentIndex /= 5;
        $currentList.drum('setIndex', currentIndex);
    });

    var dateTimeObj = (existingDate === undefined || existingDate === "") ? new Date() : new Date(existingDate);
    UpdateDateTimeWithDrum(dateTimeObj, false);
    UpdateDayofWeek(dateTimeObj.getDay(), $day.parents('.dvDateForm'));

    this.GetSelectedDateTime = function () {
        var dateString = this.GetSelectedDate() + " " + this.GetSelectedMonth() + " " + this.GetSelectedYear() + " " + DateDrumHelpers.Pad(this.GetSelectedHour()) + ":" + this.GetSelectedMin() + ":00 " + this.GetSelectedAmPm();
        return dateString;
    }
    this.GetSelectedDate = function () {
        return $day.find("option:selected").text().trim();
    }
    this.GetSelectedMonth = function () {
        return $month.find("option:selected").text().trim();
    }
    this.GetSelectedYear = function () {
        return $year.find("option:selected").text().trim();
    }
    this.GetSelectedHour = function () {
        return $hour.find("option:selected").text().trim();
    }
    this.GetSelectedMin = function () {
        return $minute.find("option:selected").text().trim();
    }
    this.GetSelectedAmPm = function () {
        return $amPm.find("option:selected").text().trim();
    }

    this.IsDateChange = function () {
        return isChanged;
    }
};
// http://benpickles.github.com/onScreen
;(function($) {
  $.expr[":"].onScreen = function(elem) {
    var $window = $(window)
    var viewport_top = $window.scrollTop()
    var viewport_height = $window.height()
    var viewport_bottom = viewport_top + viewport_height
    var $elem = $(elem)
    var top = $elem.offset().top
    var height = $elem.height()
    var bottom = top + height

    return (top >= viewport_top && top < viewport_bottom) ||
           (bottom > viewport_top && bottom <= viewport_bottom) ||
           (height > viewport_height && top <= viewport_top && bottom >= viewport_bottom)
  }
})(jQuery);

// http://upshots.org/javascript/jquery-test-if-element-is-in-viewport-visible-on-screen
$.fn.isOnScreen = function () {
    var win = $(window);
    var viewport = {
        top: win.scrollTop(),
        left: win.scrollLeft()
    };
    viewport.right = viewport.left + win.width();
    viewport.bottom = viewport.top + win.height();

    var bounds = this.offset();
    if (bounds == null) return false;
    bounds.right = bounds.left + this.outerWidth();
    bounds.bottom = bounds.top + this.outerHeight();

    return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));

};

$.fn.isOnContent = function (contentSelector) {
    var win = $(contentSelector);
    var viewport = win.offset();
    if (viewport == null) return false;
    viewport.right = viewport.left + win.outerWidth();
    viewport.bottom = viewport.top + win.outerHeight();

    viewport.right = viewport.left + win.width();
    viewport.bottom = viewport.top + win.height();

    var bounds = this.offset();
    if (bounds == null) return false;
    bounds.right = bounds.left + this.outerWidth();
    bounds.bottom = bounds.top + this.outerHeight();

    return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));

};

$.fn.isFullyOnScreen = function (contentSelector) {
    if ($(this).length < 1) return false;
    var docViewTop = $(contentSelector).offset().top;
    var docViewBottom = docViewTop + $(contentSelector).height();
    var docViewLeft = $(contentSelector).offset().left;
    var docViewRight = docViewLeft + $(contentSelector).width();

    var elemTop = $(this).offset().top;
    var elemBottom = elemTop + $(this).height();
    var elemLeft = $(this).offset().left;
    var elemRight = elemLeft + $(this).width();

    return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop)) && ((elemRight <= docViewRight) && (elemLeft >= docViewLeft));

};
/*! Magnific Popup - v1.1.0 - 2016-02-20
* http://dimsemenov.com/plugins/magnific-popup/
* Copyright (c) 2016 Dmitry Semenov; */
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):window.jQuery||window.Zepto)}(function(a){var b,c,d,e,f,g,h="Close",i="BeforeClose",j="AfterClose",k="BeforeAppend",l="MarkupParse",m="Open",n="Change",o="mfp",p="."+o,q="mfp-ready",r="mfp-removing",s="mfp-prevent-close",t=function(){},u=!!window.jQuery,v=a(window),w=function(a,c){b.ev.on(o+a+p,c)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(c,d){b.ev.triggerHandler(o+c,d),b.st.callbacks&&(c=c.charAt(0).toLowerCase()+c.slice(1),b.st.callbacks[c]&&b.st.callbacks[c].apply(b,a.isArray(d)?d:[d]))},z=function(c){return c===g&&b.currTemplate.closeBtn||(b.currTemplate.closeBtn=a(b.st.closeMarkup.replace("%title%",b.st.tClose)),g=c),b.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(b=new t,b.init(),a.magnificPopup.instance=b)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(void 0!==a.transition)return!0;for(;b.length;)if(b.pop()+"Transition"in a)return!0;return!1};t.prototype={constructor:t,init:function(){var c=navigator.appVersion;b.isLowIE=b.isIE8=document.all&&!document.addEventListener,b.isAndroid=/android/gi.test(c),b.isIOS=/iphone|ipad|ipod/gi.test(c),b.supportsTransition=B(),b.probablyMobile=b.isAndroid||b.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),d=a(document),b.popupsCache={}},open:function(c){var e;if(c.isObj===!1){b.items=c.items.toArray(),b.index=0;var g,h=c.items;for(e=0;e<h.length;e++)if(g=h[e],g.parsed&&(g=g.el[0]),g===c.el[0]){b.index=e;break}}else b.items=a.isArray(c.items)?c.items:[c.items],b.index=c.index||0;if(b.isOpen)return void b.updateItemHTML();b.types=[],f="",c.mainEl&&c.mainEl.length?b.ev=c.mainEl.eq(0):b.ev=d,c.key?(b.popupsCache[c.key]||(b.popupsCache[c.key]={}),b.currTemplate=b.popupsCache[c.key]):b.currTemplate={},b.st=a.extend(!0,{},a.magnificPopup.defaults,c),b.fixedContentPos="auto"===b.st.fixedContentPos?!b.probablyMobile:b.st.fixedContentPos,b.st.modal&&(b.st.closeOnContentClick=!1,b.st.closeOnBgClick=!1,b.st.showCloseBtn=!1,b.st.enableEscapeKey=!1),b.bgOverlay||(b.bgOverlay=x("bg").on("click"+p,function(){b.close()}),b.wrap=x("wrap").attr("tabindex",-1).on("click"+p,function(a){b._checkIfClose(a.target)&&b.close()}),b.container=x("container",b.wrap)),b.contentContainer=x("content"),b.st.preloader&&(b.preloader=x("preloader",b.container,b.st.tLoading));var i=a.magnificPopup.modules;for(e=0;e<i.length;e++){var j=i[e];j=j.charAt(0).toUpperCase()+j.slice(1),b["init"+j].call(b)}y("BeforeOpen"),b.st.showCloseBtn&&(b.st.closeBtnInside?(w(l,function(a,b,c,d){c.close_replaceWith=z(d.type)}),f+=" mfp-close-btn-in"):b.wrap.append(z())),b.st.alignTop&&(f+=" mfp-align-top"),b.fixedContentPos?b.wrap.css({overflow:b.st.overflowY,overflowX:"hidden",overflowY:b.st.overflowY}):b.wrap.css({top:v.scrollTop(),position:"absolute"}),(b.st.fixedBgPos===!1||"auto"===b.st.fixedBgPos&&!b.fixedContentPos)&&b.bgOverlay.css({height:d.height(),width:d.width(),position:"absolute"}),b.st.enableEscapeKey&&d.on("keyup"+p,function(a){27===a.keyCode&&b.close()}),v.on("resize"+p,function(){b.updateSize()}),b.st.closeOnContentClick||(f+=" mfp-auto-cursor"),f&&b.wrap.addClass(f);var k=b.wH=v.height(),n={};if(b.fixedContentPos&&b._hasScrollBar(k)){var o=b._getScrollbarSize();o&&(n.marginRight=o)}b.fixedContentPos&&(b.isIE7?a("body, html").css("overflow","hidden"):n.overflow="hidden");var r=b.st.mainClass;return b.isIE7&&(r+=" mfp-ie7"),r&&b._addClassToMFP(r),b.updateItemHTML(),y("BuildControls"),a("html").css(n),b.bgOverlay.add(b.wrap).prependTo(b.st.prependTo||a(document.body)),b._lastFocusedEl=document.activeElement,setTimeout(function(){b.content?(b._addClassToMFP(q),b._setFocus()):b.bgOverlay.addClass(q),d.on("focusin"+p,b._onFocusIn)},16),b.isOpen=!0,b.updateSize(k),y(m),c},close:function(){b.isOpen&&(y(i),b.isOpen=!1,b.st.removalDelay&&!b.isLowIE&&b.supportsTransition?(b._addClassToMFP(r),setTimeout(function(){b._close()},b.st.removalDelay)):b._close())},_close:function(){y(h);var c=r+" "+q+" ";if(b.bgOverlay.detach(),b.wrap.detach(),b.container.empty(),b.st.mainClass&&(c+=b.st.mainClass+" "),b._removeClassFromMFP(c),b.fixedContentPos){var e={marginRight:""};b.isIE7?a("body, html").css("overflow",""):e.overflow="",a("html").css(e)}d.off("keyup"+p+" focusin"+p),b.ev.off(p),b.wrap.attr("class","mfp-wrap").removeAttr("style"),b.bgOverlay.attr("class","mfp-bg"),b.container.attr("class","mfp-container"),!b.st.showCloseBtn||b.st.closeBtnInside&&b.currTemplate[b.currItem.type]!==!0||b.currTemplate.closeBtn&&b.currTemplate.closeBtn.detach(),b.st.autoFocusLast&&b._lastFocusedEl&&a(b._lastFocusedEl).focus(),b.currItem=null,b.content=null,b.currTemplate=null,b.prevHeight=0,y(j)},updateSize:function(a){if(b.isIOS){var c=document.documentElement.clientWidth/window.innerWidth,d=window.innerHeight*c;b.wrap.css("height",d),b.wH=d}else b.wH=a||v.height();b.fixedContentPos||b.wrap.css("height",b.wH),y("Resize")},updateItemHTML:function(){var c=b.items[b.index];b.contentContainer.detach(),b.content&&b.content.detach(),c.parsed||(c=b.parseEl(b.index));var d=c.type;if(y("BeforeChange",[b.currItem?b.currItem.type:"",d]),b.currItem=c,!b.currTemplate[d]){var f=b.st[d]?b.st[d].markup:!1;y("FirstMarkupParse",f),f?b.currTemplate[d]=a(f):b.currTemplate[d]=!0}e&&e!==c.type&&b.container.removeClass("mfp-"+e+"-holder");var g=b["get"+d.charAt(0).toUpperCase()+d.slice(1)](c,b.currTemplate[d]);b.appendContent(g,d),c.preloaded=!0,y(n,c),e=c.type,b.container.prepend(b.contentContainer),y("AfterChange")},appendContent:function(a,c){b.content=a,a?b.st.showCloseBtn&&b.st.closeBtnInside&&b.currTemplate[c]===!0?b.content.find(".mfp-close").length||b.content.append(z()):b.content=a:b.content="",y(k),b.container.addClass("mfp-"+c+"-holder"),b.contentContainer.append(b.content)},parseEl:function(c){var d,e=b.items[c];if(e.tagName?e={el:a(e)}:(d=e.type,e={data:e,src:e.src}),e.el){for(var f=b.types,g=0;g<f.length;g++)if(e.el.hasClass("mfp-"+f[g])){d=f[g];break}e.src=e.el.attr("data-mfp-src"),e.src||(e.src=e.el.attr("href"))}return e.type=d||b.st.type||"inline",e.index=c,e.parsed=!0,b.items[c]=e,y("ElementParse",e),b.items[c]},addGroup:function(a,c){var d=function(d){d.mfpEl=this,b._openClick(d,a,c)};c||(c={});var e="click.magnificPopup";c.mainEl=a,c.items?(c.isObj=!0,a.off(e).on(e,d)):(c.isObj=!1,c.delegate?a.off(e).on(e,c.delegate,d):(c.items=a,a.off(e).on(e,d)))},_openClick:function(c,d,e){var f=void 0!==e.midClick?e.midClick:a.magnificPopup.defaults.midClick;if(f||!(2===c.which||c.ctrlKey||c.metaKey||c.altKey||c.shiftKey)){var g=void 0!==e.disableOn?e.disableOn:a.magnificPopup.defaults.disableOn;if(g)if(a.isFunction(g)){if(!g.call(b))return!0}else if(v.width()<g)return!0;c.type&&(c.preventDefault(),b.isOpen&&c.stopPropagation()),e.el=a(c.mfpEl),e.delegate&&(e.items=d.find(e.delegate)),b.open(e)}},updateStatus:function(a,d){if(b.preloader){c!==a&&b.container.removeClass("mfp-s-"+c),d||"loading"!==a||(d=b.st.tLoading);var e={status:a,text:d};y("UpdateStatus",e),a=e.status,d=e.text,b.preloader.html(d),b.preloader.find("a").on("click",function(a){a.stopImmediatePropagation()}),b.container.addClass("mfp-s-"+a),c=a}},_checkIfClose:function(c){if(!a(c).hasClass(s)){var d=b.st.closeOnContentClick,e=b.st.closeOnBgClick;if(d&&e)return!0;if(!b.content||a(c).hasClass("mfp-close")||b.preloader&&c===b.preloader[0])return!0;if(c===b.content[0]||a.contains(b.content[0],c)){if(d)return!0}else if(e&&a.contains(document,c))return!0;return!1}},_addClassToMFP:function(a){b.bgOverlay.addClass(a),b.wrap.addClass(a)},_removeClassFromMFP:function(a){this.bgOverlay.removeClass(a),b.wrap.removeClass(a)},_hasScrollBar:function(a){return(b.isIE7?d.height():document.body.scrollHeight)>(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(c,d){if(void 0===d||d===!1)return!0;if(e=c.split("_"),e.length>1){var f=b.find(p+"-"+e[0]);if(f.length>0){var g=e[1];"replaceWith"===g?f[0]!==d[0]&&f.replaceWith(d):"img"===g?f.is("img")?f.attr("src",d):f.replaceWith(a("<img>").attr("src",d).attr("class",f.attr("class"))):f.attr(e[1],d)}}else b.find(p+"-"+c).html(d)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&#215;</button>',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("<div>");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I="ajax",J=function(){H&&a(document.body).removeClass(H)},K=function(){J(),b.req&&b.req.abort()};a.magnificPopup.registerModule(I,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){b.types.push(I),H=b.st.ajax.cursor,w(h+"."+I,K),w("BeforeChange."+I,K)},getAjax:function(c){H&&a(document.body).addClass(H),b.updateStatus("loading");var d=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};y("ParseAjax",g),b.appendContent(a(g.data),I),c.finished=!0,J(),b._setFocus(),setTimeout(function(){b.wrap.addClass(q)},16),b.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(d),""}}});var L,M=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){L&&clearInterval(L),L=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(L),c++,void(3===c?e(10):40===c?e(50):100===c&&e(500)))},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:M(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(L&&clearInterval(L),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var N,O=function(){return void 0===N&&(N=void 0!==document.createElement("p").style.MozTransform),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return O()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var P="iframe",Q="//about:blank",R=function(a){if(b.currTemplate[P]){var c=b.currTemplate[P].find("iframe");c.length&&(a||(c[0].src=Q),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(h+"."+P,function(){R()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var S=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,e=".mfp-gallery";return b.direction=!0,c&&c.enabled?(f+=" mfp-gallery",w(m+e,function(){c.navigateByImgClick&&b.wrap.on("click"+e,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),d.on("keydown"+e,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),w("UpdateStatus"+e,function(a,c){c.text&&(c.text=T(c.text,b.currItem.index,b.items.length))}),w(l+e,function(a,d,e,f){var g=b.items.length;e.counter=g>1?T(c.tCounter,f.index,g):""}),w("BuildControls"+e,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(s),f=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(s);e.click(function(){b.prev()}),f.click(function(){b.next()}),b.container.append(e.add(f))}}),w(n+e,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),void w(h+e,function(){d.off(e),b.wrap.off("click"+e),b.arrowRight=b.arrowLeft=null})):!1},next:function(){b.direction=!0,b.index=S(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=S(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=S(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),y("LazyLoad",d),"image"===d.type&&(d.img=a('<img class="mfp-img" />').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,y("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+U,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+U,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()});

// This is called with the results from from FB.getLoginStatus().
function statusChangeCallback(response) {
    console.log('statusChangeCallback');
    console.log(response);
    // The response object is returned with a status field that lets the
    // app know the current login status of the person.
    // Full docs on the response object can be found in the documentation
    // for FB.getLoginStatus().
    if (response.status === 'connected') {
        // Logged into your app and Facebook. 
    } else if (response.status === 'not_authorized') {
        // The person is logged into Facebook, but not your app.
        /*document.getElementById('status').innerHTML = 'Please log ' +
          'into this app.';*/
    } else {
        // The person is not logged into Facebook, so we're not sure if
        // they are logged into this app or not.
        /*document.getElementById('status').innerHTML = 'Please log ' +
          'into Facebook.';*/
    }
}

// This function is called when someone finishes with the Login
// Button.  See the onlogin handler attached to it in the sample
// code below.
function checkLoginState() {
    FB.getLoginStatus(function (response) {
        statusChangeCallback(response);
    });
}

window.fbAsyncInit = function () {
    FB.init({
        appId: FacebookAppId,
        cookie: true,  // enable cookies to allow the server to access 
        // the session
        xfbml: true,  // parse social plugins on this page
        version: 'v2.7', // use graph api version 2.5
        scope: 'public_profile,email'
    });

    // Now that we've initialized the JavaScript SDK, we call 
    // FB.getLoginStatus().  This function gets the state of the
    // person visiting this page and can return one of three states to
    // the callback you provide.  They can be:
    //
    // 1. Logged into your app ('connected')
    // 2. Logged into Facebook, but not your app ('not_authorized')
    // 3. Not logged into Facebook and can't tell if they are logged into
    //    your app or not.
    //
    // These three cases are handled in the callback function.

    FB.getLoginStatus(function (response) {
        statusChangeCallback(response);
    });

};

// Load the SDK asynchronously
(function (d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/en_US/sdk.js";
    fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));


function register_prospect_after_facebook_login() {
    FB.login(function (response) {
        if (response.authResponse) {
            FB.api('/me', { fields: 'id,name,email,link' }, function (response) {
                if (IsUnregisteredAgent(response.email) && !IsAgent(response.email) && !IsProspect(response.email)) {

                    window.location.href = "/PublicRegistration?frompage=unregisteredAgent&email=" + graphProfile.email;
                }
                else {
                    ProcessProspectRegistrationForSignInWithFacebook(response);
                }
            });
        } else {
            console.log('User cancelled login or did not fully authorize.');
        }
    }, { scope: 'public_profile,email', return_scopes: true });
}

function PostMessage(userName, response) {
    //    var opts = {
    //        message: postMessage  ,
    //        name: 'Condonow.com',
    //        link: 'https://condonow.247salescenter.com/10-14-Prince-Arthur'
    //    };
    $.get('/CustomSettings.xml', function (xml) {
        var opts = {};
        var messages = $(xml).find("fbmessage");
        for (var i = 0; i < messages.length; i++) {
            opts[messages[i].getAttribute("key")] = messages[i].getAttribute("value");
        }
        opts["message"] = opts["message"];
        opts["link"] = parent.window.location.href.replace('/Login', '');
        FB.api('/me/feed', 'post', opts, function (response) {
            if (!response || response.error) {
                //alert('Error occured');
            } else {
                //alert('Post ID: ' + response.id);
            }
        });
    });


}

function RegisterProspect(fbData) {
    var url = '/Stateless.asmx/ProcessProspectRegistrationByFacebook';
    var param = JSON.stringify({
        name: fbData.name,
        email: fbData.email,
        phone: '',
        isFBuser: true,
        isinsiderclubmember: false,
        fbProfileId: fbData.id,
        fbProfileUrl: fbData.link,
        url: encodeURIComponent(parent.window.location.pathname)
    });

    $.ajax({
        type: "POST",
        url: url,
        data: param,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,
        success: function (data) {
            if (data.d.indexOf("newuser") >= 0) {
                // PostMessage(fbData.name, fbData);
            }
            if (data.d.indexOf("true") >= 0) {
                if(typeof parent.fcm_token !== "undefined") {
                    storeDeviceToken();
                } else parent.window.location = parent.window.location;
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log(errorThrown);
        }
    });
}

function sign_up_with_facebook() {
    FB.login(function (response) {
        if (response.authResponse) {
            FB.api('/me', { fields: 'id,name,email,link' }, function (response) {
            
                    ProcessProspectRegistrationForSignUpWithFacebook(response);
               
            });
        } else {
            console.log('User cancelled login or did not fully authorize.');
        }
    }, { scope: 'public_profile,email', return_scopes: true });
}

function ProcessProspectRegistrationForSignInWithFacebook(fbData) {
    var url = '/Stateless.asmx/ProcessProspectRegistrationForSignUpWithFacebook';
    var param = JSON.stringify({
        name: fbData.name,
        email: fbData.email,
        phone: '',
        isFBuser: true,
        isinsiderclubmember: false,
        fbProfileId: fbData.id,
        fbProfileUrl: '',
        url: encodeURIComponent(parent.window.location.pathname)
    });

    $.ajax({
        type: "POST",
        url: url,
        data: param,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,
        success: function (data) {
            if (data.d.indexOf("newuser") >= 0) {
                if (data.d.split('~').length == 2) {
                    $.cookie("FilledProspectID", data.d.split('~')[1]);
                    $.cookie("fromSocialLogin", "true");
                }
                parent.PublicInviteColleague(fbData.email, true);
            }
            if (data.d.indexOf("emailexists") >= 0) {
                RegisterProspect(fbData);
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log(errorThrown);
        }
    });
}

function ProcessProspectRegistrationForSignUpWithFacebook(fbData) {
    var url = '/Stateless.asmx/ProcessProspectRegistrationForSignUpWithFacebook';
    var param = JSON.stringify({
        name: fbData.name,
        email: fbData.email,
        phone: '',
        isFBuser: true,
        isinsiderclubmember: false,
        fbProfileId: fbData.id,
        fbProfileUrl: fbData.link,
        url: encodeURIComponent(parent.window.location.pathname)
    });

    $.ajax({
        type: "POST",
        url: url,
        data: param,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,
        success: function (data) {
            if (data.d.indexOf("newuser") >= 0) {
                //PostMessage(fbData.name, fbData);
            }
            if (data.d.indexOf("emailexists") >= 0) {
                //showing connect account popup
                window.location = "/ConnectAccount.aspx?socialApp=Facebook&email=" + encodeURIComponent(fbData.email);
            }
            if (data.d.indexOf("true") >= 0) {
                if (data.d.split('~').length == 2) {
                    $.cookie("FilledProspectID", data.d.split('~')[1]);
                    $.cookie("fromSocialLogin", "true");
                }
                parent.PublicInviteColleague(fbData.email, true);
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log(errorThrown);
        }
    });
}


function signOut() {
    //gapi.auth.signOut();
}

//Google Authentication 
// Google Sign-in (new)
function IsAgent(emailID) {
    var result = false;
    $.ajax({
        type: "POST",
        url: "/Stateless.asmx/IsAgent",
        data: "{ emailID: '" + emailID + "' }",
        contentType: 'application/json; charset=utf-8',
        async: false,
        dataType: 'json',
        error: function (XMLHttpRequest, textStatus, errorThrown) {
        },
        success: function (data) {
            if (data.d) {
                result = true;
            } else {
                result = false;
            }
        }
    });
    return result;
}
function IsProspect(emailID) {
    var result = false;
    $.ajax({
        type: "POST",
        url: "/Stateless.asmx/IsProspect",
        data: "{ emailID: '" + emailID + "' }",
        contentType: 'application/json; charset=utf-8',
        async: false,
        dataType: 'json',
        error: function (XMLHttpRequest, textStatus, errorThrown) {
        },
        success: function (data) {
            if (data.d) {
                result = true;
            } else {
                result = false;
            }
        }
    });
    return result;
}

//check for agents not in condonow
function IsUnregisteredAgent(emailID) {
    var result = false;
    $.ajax({
        type: "POST",
        //url: "/Stateless.asmx/IsUnregisteredAgent",
        url: "/Stateless.asmx/IsUnregisteredAgent",
        data: "{ emailID: '" + emailID + "' }",
        contentType: 'application/json; charset=utf-8',
        async: false,
        dataType: 'json',
        error: function (XMLHttpRequest, textStatus, errorThrown) {
        },
        success: function (data) {
            if (data.d) {
                result = true;
            } else {
                result = false;
            }
        }
    });
    return result;
}

function googleAuthSuccess(googleUser) {
    if (googleAuthTrigger) {
        var profile = googleUser.getBasicProfile();
        var gData = {};
        gData.name = profile.getName();
        gData.email = profile.getEmail();
        gData.id = profile.getId();
        gData.link = '';
        gData.image = profile.getImageUrl();
        var id_token = googleUser.getAuthResponse().id_token;

        if (IsAgent(gData.email)) {
            ProcessRegistrationForSignInWithSocialMedia(gData, '/Stateless.asmx/LoginForAgentWithSocialMedia', true);
        }
        else if (IsUnregisteredAgent(gData.email)) {

            window.location.href = "/PublicRegistration?frompage=unregisteredAgent&email=" + gData.email;
        }
        else if (IsProspect(gData.email)) {
            ProcessRegistrationForSignInWithSocialMedia(gData, '/Stateless.asmx/LoginForProspectWithSocialMedia', false);
        }
        else {
            ProcessRegistrationForSignInWithSocialMedia(gData, '/Stateless.asmx/ProcessProspectRegistrationBySocialMedia', false);
        }

    }
}
function googleAuthError() {
    console.log('Error');
    // Handle sign-in errors
}

function loadProfile() {
    var request = gapi.client.plus.people.get({ 'userId': 'me' });
    request.execute(loadProfileCallback);
}

function loadProfileCallback(obj) {
    profile = obj;

    // Filter the emails object to find the user's primary account, which might
    // not always be the first in the array. The filter() method supports IE9+.
    email = obj['emails'].filter(function (v) {
        return v.type === 'account'; // Filter out the primary email
    })[0].value; // get the email from the filtered results, should always be defined.
    var gData = {};
    gData.name = obj.displayName;
    gData.email = email;
    gData.id = obj.id;
    gData.link = obj.url;
    gData.image = obj.image.url;
    ProcessProspectRegistrationForSignInWithGooglePlus(gData, '/Stateless.asmx/ProcessProspectRegistrationForSignUpWithGooglePlus');
}

function RegisterProspectForSocialMedia(gData, url) {
    var profileUrl = typeof gData.link != 'undefined' ? gData.link : "";
    var param = JSON.stringify({
        name: gData.name,
        email: gData.email,
        phone: '',
        isinsiderclubmember: false,
        socialMediaId: gData.id,
        googlePlusProfileUrl: profileUrl,
        socialMediaImageUrl: gData.image,
        url: encodeURIComponent(parent.window.location.pathname)
    });

    $.ajax({
        type: "POST",
        url: url,
        data: param,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,
        success: function (data) {
            if (data.d == "true") {
                signOut();
                if(typeof parent.fcm_token !== "undefined") {
                    storeDeviceToken();
                } else parent.window.location = parent.window.location;
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log(errorThrown);
        }
    });
}


function sign_up_with_google_plus(authResult) {
    if (authResult['g-oauth-window'] == undefined)
    { return }
    if (authResult['status']['signed_in']) {
        // Update the app to reflect a signed in user
        // Hide the sign-in button now that the user is authorized, for example:
        gapi.client.load('plus', 'v1', sign_up_with_google_plus_load_profile);
    } else {
        // Update the app to reflect a signed out user
        // Possible error values:
        //   "user_signed_out" - User is signed-out
        //   "access_denied" - User denied access to your app
        //   "immediate_failed" - Could not automatically log in the user
        // console.log('Sign-in state: ' + authResult['error']);
    }
}

function sign_up_with_google_plus_load_profile() {
    var request = gapi.client.plus.people.get({ 'userId': 'me' });
    request.execute(sign_up_with_google_plus_load_profile_callback);
}

function sign_up_with_google_plus_load_profile_callback(obj) {
    profile = obj;

    // Filter the emails object to find the user's primary account, which might
    // not always be the first in the array. The filter() method supports IE9+.
    email = obj['emails'].filter(function (v) {
        return v.type === 'account'; // Filter out the primary email
    })[0].value; // get the email from the filtered results, should always be defined.
    var gData = {};
    gData.name = obj.displayName;
    gData.email = email;
    gData.id = obj.id;
    gData.link = obj.url;
    gData.image = obj.image.url;
    ProcessProspectRegistrationForSignUpWithGooglePlus(gData, '/Stateless.asmx/ProcessProspectRegistrationForSignUpWithGooglePlus');
}

function ProcessProspectRegistrationForSignUpWithGooglePlus(gData, url) {
    var profileUrl = typeof gData.link != 'undefined' ? gData.link : "";
    var param = JSON.stringify({
        name: gData.name,
        email: gData.email,
        phone: '',
        isinsiderclubmember: false,
        googlePlusId: gData.id,
        googlePlusProfileUrl: profileUrl,
        googlePlusImageUrl: gData.image,
        url: encodeURIComponent(parent.window.location.pathname)
    });

    $.ajax({
        type: "POST",
        url: url,
        data: param,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,
        success: function (data) {
            if (data.d.indexOf("emailexists") >= 0) {
                //showing connect account popup
                window.location = "/ConnectAccount.aspx?socialApp=Google&email=" + encodeURIComponent(gData.email);
            }
            if (data.d.indexOf("true") >= 0) {
                signOut();
                //parent.window.location = parent.window.location;
                if (data.d.split('~').length == 2) {
                    $.cookie("FilledProspectID", data.d.split('~')[1]);
                    $.cookie("fromSocialLogin", "true");
                }
                parent.PublicInviteColleague(gData.email, true);
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log(errorThrown);
        }
    });
}

function ProcessRegistrationForSignInWithSocialMedia(gData, url, isagent) {
    console.log(gData);
    var profileUrl = typeof gData.link != 'undefined' ? gData.link : "";
    var param = JSON.stringify({
        name: gData.name,
        email: gData.email,
        phone: '',
        isinsiderclubmember: false,
        socialMediaId: gData.id,
        googlePlusProfileUrl: profileUrl,
        socialMediaImageUrl: gData.image,
        url: encodeURIComponent(parent.window.location.pathname)
    });
    console.log(param);
    $.ajax({
        type: "POST",
        url: url,
        data: param,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,
        success: function (data) {

            if (data.d.indexOf("emailexists") >= 0 && isagent) {
               // parent.OpenCreateAccountPopup();                                
                RegisterProspectForSocialMedia(gData, '/Stateless.asmx/ProcessAgentRegistrationBySocialMedia');           
               
            }
            else if (data.d.indexOf("emailexists") >= 0) {
                RegisterProspectForSocialMedia(gData, '/Stateless.asmx/ProcessProspectRegistrationBySocialMedia');
            }
            if (data.d.indexOf("true") >= 0) {
                signOut();
                if(typeof parent.fcm_token !== "undefined") {
                    storeDeviceToken();
                } else parent.window.location = parent.window.location;
                if (data.d.split('~').length == 2) {
                    $.cookie("FilledProspectID", data.d.split('~')[1]);
                    $.cookie("fromSocialLogin", "true");
                }
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log(errorThrown);
        }
    });
}

//Azure / Microsoft Graph Integration
var aad_token = '';
var aad_idToken = '';

function microsoftGraphAuthenticationHandler() {
    myMSALObj.loginPopup(applicationConfig.graphScopes).then(function (idToken) {
        aad_idToken = idToken;
        //Login Success
        //showWelcomeMessage();
        console.log('Success', idToken, myMSALObj.getUser());
        acquireTokenPopupAndCallMSGraph();
    }, function (error) {
        console.log(error);
    });
}

function acquireTokenPopupAndCallMSGraph() {
    //Call acquireTokenSilent (iframe) to obtain a token for Microsoft Graph
    parent.myMSALObj.acquireTokenSilent(applicationConfig.graphScopes).then(function (accessToken) {
        aad_token = accessToken;
        callMSGraph(applicationConfig.graphEndpoint, accessToken, graphAPICallback);
    }, function (error) {
        console.log(error);
        // Call acquireTokenPopup (popup window) in case of acquireTokenSilent failure due to consent or interaction required ONLY
        if (error.indexOf("consent_required") !== -1 || error.indexOf("interaction_required") !== -1 || error.indexOf("login_required") !== -1) {
            parent.myMSALObj.acquireTokenPopup(applicationConfig.graphScopes).then(function (accessToken) {
                callMSGraph(applicationConfig.graphEndpoint, accessToken, graphAPICallback);
            }, function (error) {
                console.log(error);
            });
        }
    });
}
function graphAPICallback(data) {
    var graphProfile = {};
    console.log(data);
    graphProfile.name = data.responses[1].body.displayName ? data.responses[1].body.displayName : data.responses[0].body.displayName;
    graphProfile.email = data.responses[1].body.userPrincipalName ? data.responses[1].body.userPrincipalName : data.responses[0].body.userPrincipalName;
    graphProfile.link = '';
    graphProfile.id = data.responses[1].body.id ? data.responses[1].body.id : data.responses[0].body.id,
    graphProfile.image = data.responses[0].status != 404 && data.responses[0].headers['Content-Type'] && data.responses[0].headers['Content-Type'].indexOf('image') > -1 ? data.responses[0].body : data.responses[1].status != 404 && data.responses[1].headers['Content-Type'] && data.responses[1].headers['Content-Type'].indexOf('image') > -1 ? data.responses[1].body : '';
    if (IsAgent(graphProfile.email)) {
        ProcessRegistrationForSignInWithSocialMedia(graphProfile, '/Stateless.asmx/LoginForAgentWithSocialMedia', true);
    }
    else if (IsUnregisteredAgent(graphProfile.email)) {
      
        window.location.href = "/PublicRegistration?frompage=unregisteredAgent&email=" + graphProfile.email;
    }
    else if (IsProspect(graphProfile.email)) {
        ProcessRegistrationForSignInWithSocialMedia(graphProfile, '/Stateless.asmx/LoginForProspectWithSocialMedia', false);
    }
    
    else {
        ProcessRegistrationForSignInWithSocialMedia(graphProfile, '/Stateless.asmx/ProcessProspectRegistrationBySocialMedia', false);
    }
}

function acquireTokenRedirectCallBack(errorDesc, token, error, tokenType) {
    if (tokenType === "access_token") {
        callMSGraph(applicationConfig.graphEndpoint, token, graphAPICallback);
    } else {
        console.log("token type is:" + tokenType);
    }
}

function callMSGraph(theUrl, accessToken, callback) {
    var xmlHttp = new XMLHttpRequest();
    var json = {
        "requests": [
          {
              "id": "1",
              "method": "GET",
              "url": "/me/"
          },
          {
              "id": "2",
              "method": "GET",
              "url": "/me/photo/$value"
          }
        ]
    };
    xmlHttp.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200)
            callback(JSON.parse(this.responseText));
    }
    xmlHttp.open("POST", theUrl, true); // true for asynchronous
    xmlHttp.setRequestHeader('Authorization', 'Bearer ' + accessToken);
    xmlHttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
    xmlHttp.send(JSON.stringify(json));
}

function ProcessRegistrationForSignInWithGraph(graphData, url) {
    var param = JSON.stringify({
        name: graphData.name,
        email: graphData.email,
        phone: '',
        isinsiderclubmember: false,
        graphProfileImage: graphData.image,
        url: encodeURIComponent(parent.window.location.pathname)
    });

    $.ajax({
        type: "POST",
        url: url,
        data: param,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,
        success: function (data) {
            if (data.d.indexOf("emailexists") >= 0) {
                RegisterProspectForGraph(graphData, '/Stateless.asmx/'); //ProcessProspectRegistrationByGooglePlus

            }
            else {
                RegisterProspectForGraph(graphData, '/Stateless.asmx/'); //ProcessAgentRegistrationByGooglePlus
            }
            if (data.d.indexOf("true") >= 0) {
                if(typeof parent.fcm_token !== "undefined") {
                    storeDeviceToken();
                } else parent.window.location = parent.window.location;
                if (data.d.split('~').length == 2) {
                    $.cookie("FilledProspectID", data.d.split('~')[1]);
                    $.cookie("fromSocialLogin", "true");
                }
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log(errorThrown);
        }
    });
}




function RegisterProspectForGraph(graphData, url) {
    var param = JSON.stringify({
        name: graphData.name,
        email: graphData.email,
        phone: '',
        isinsiderclubmember: false,
        graphProfileImage: graphData.image,
        url: encodeURIComponent(parent.window.location.pathname)
    });

    $.ajax({
        type: "POST",
        url: url,
        data: param,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,
        success: function (data) {
            if (data.d == "true") {
                if(typeof parent.fcm_token !== "undefined") {
                    storeDeviceToken();
                } else parent.window.location = parent.window.location;
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log(errorThrown);
        }
    });
}

function storeDeviceToken(){
    $.ajax({
        type: "POST",
        url: "/Stateless.asmx/DeviceStore",
        data: JSON.stringify({ deviceToken: parent.fcm_token}),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,
        success: function (data) {
            parent.window.location = parent.window.location;
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log(errorThrown);
            parent.window.location = parent.window.location;
        }
    }); 
}

var actionText = [
    "Clicked on ",
    "Checked on ",
    "Shared on ",
    "",
    "Impression",
    "Hovered on ",
    "Submit "
];

$(window).load(function () {
    if (typeof publicPage == 'undefined')
        document.cookie = 'hasClicked=no;path=/'; 
});

$.fn.insertIntoProjectStats = function (projectId, brokerId, pageUrl, action, actionIndex) {
    actionVal = (action !== '') ? actionText[actionIndex] + action : action;
    InsertToProjectStats(projectId, brokerId, pageUrl, actionVal);
}

$.fn.insertListIntoProjectStats = function (projectIdList, brokerId, pageUrl, action, actionIndex) {
    actionVal = (action !== '') ? actionText[actionIndex] + action : action;
    InsertListToProjectStats(projectIdList, brokerId, pageUrl, actionVal);
}
var realtorImpression;
var adsImpressionTime;
var arrads = new Array();
var arr_projects = new Array();
var arr_realtors = new Array();
var findAnAgentImpression;
var arr_findAnAgent = new Array();
var adsBottomLine;

function ProjectStats() {
    this.bindOnClick = function (projectId, brokerId, details, actionIndex) {
        if (details.length === 0) return;
        $.each(details, function (intIndex, objValue) {
            if (objValue.event === "click") {
                $(objValue.controlId).click(function (event) {
                    if (objValue.hrefVal === 1 && $(this).attr("target") !== "_blank")
                        event.preventDefault();
                    new ProjectStats().recordOnEvent(this, objValue, projectId, brokerId, actionIndex);
                });
            }
            else if (objValue.event === "hover") {
                $(objValue.controlId).on({
                    mouseover: function () {
                        event.preventDefault();
                        new ProjectStats().recordOnEvent(this, objValue, projectId, brokerId, actionIndex);
                    },
                    mouseout: function () {
                        event.preventDefault();
                    }
                });
            }
        });
    }

    this.recordOnEvent = function (obj, objValue, projectId, brokerId, actionIndex) {
        var pageUrl = typeof objValue.pageUrl !== "undefined" ? objValue.pageUrl : '';
        var objLabel;
        if (objValue.label !== '' && objValue.label === "get-data-stats") {
            objLabel = $.trim($(obj).data("stats")) + " popup opened";
            actionIndex = 3;
        }
        else if (objValue.label !== '' && objValue.label === "get-text")
            objLabel = $.trim($(obj).text());
        else objLabel = objValue.label;
        var objPrevLabel = (objValue.prevlabel !== undefined) ? objValue.prevlabel : "";
        var actionVal = (objValue.label !== '') ? actionText[actionIndex] + objPrevLabel + objLabel : objValue.label;
        var hrefVal = (objValue.hrefVal === 1 && $(obj).attr("target") !== "_blank") ? $(obj).attr("href") : undefined;
        InsertToProjectStats(projectId, brokerId, pageUrl, actionVal, hrefVal);
        InsertToGoogleAnalytics({ 'eventName': objValue.event, 'value': objValue.label });
        $.cookie("hasClicked", "yes", { path: '/' });
    }

    this.recordProjectStats = function (projectId, brokerId, pageUrl, action, actionIndex, hrefVal, callback) {
        var localUrl = pageUrl.toLowerCase();
        if (localUrl.indexOf( 'home.aspx') > -1)
            pageUrl = pageUrl.replace(/home.aspx/ig, '');
        else if (localUrl.indexOf('login') > -1)
            pageUrl = pageUrl.replace(/loginPop.aspx/ig, '');
        else if (localUrl.indexOf('create-an-account') > -1)
            pageUrl = pageUrl.replace(/create-an-account/ig, '');
        else if (localUrl.indexOf('publicregistration.aspx') > -1)
            pageUrl = pageUrl.replace(/publicregistration/ig, '');
        else if (localUrl.indexOf('join-the-insiders-club') > -1)
            pageUrl = pageUrl.replace(/join-the-insiders-club/ig, '');

        var actionVal = (action !== '') ? actionText[actionIndex] + action : action;
        InsertToProjectStats(projectId, brokerId, localUrl, actionVal, hrefVal, callback);
        InsertToGoogleAnalytics({ 'eventName': 'click', 'value': action });
    }

    this.recordCompare = function (projectId, brokerId, pageUrl, action, actionIndex, hrefVal, callback) {
        var actionVal = (action !== '') ? actionText[actionIndex] + action : action;
        InsertToProjectStats(projectId, brokerId, pageUrl, actionVal, hrefVal, callback);
		var a = UriParser.getUri(pageUrl);

		if (typeof ga !== 'undefined') {
			ga('send', {
				'hitType': 'pageview',
				'page': a.pathname + a.search,
				'title': document.title
			});
		}

		if (typeof gtag !== 'undefined') {
			gtag('event', {
				'hitType': 'pageview',
				'page': window.location.pathname + '?eventName=' + options.eventName + '&eventValue=' + options.value,
				'title': document.title,
				'send_to': 'G-R6WWJN6LCB'
			});
		}
    }

    this.recordBrowseListProjectStats = function (projectIdList, brokerId, pageUrl) {
        InsertListToProjectStats(projectIdList, brokerId, pageUrl, actionText[4]);
    }

    this.recordStatsOnLoad = function (selector, brokerId, scrollTimer) {
        $(window).load(function () {
            setTimeout(function () {
                var projectIdList = $(selector)
                                        .filter(':onScreen')
                                        .map(function () {
                                            if ($(this).find('img').isOnScreen() && $(this).find('div.projName').isOnScreen())
                                                return this.id;
                                        }).get();

                InsertListToProjectStats(projectIdList, brokerId, $(location).attr("href"), actionText[4]);
            }, 1000 + scrollTimer);
        });
    }

    this.recordStatsOnScroll = function (selector, brokerId, scrollTimer) {
        $(window).scroll(function () {
            clearTimeout($.data(this, "scrollTimer"));
            $.data(this, "scrollTimer", setTimeout(function () {
                var projectIdList = $(selector)
                                        .filter(':onScreen')
                                        .map(function () {
                                            if ($(this).find('img').isOnScreen() && $(this).find('div.projName').isOnScreen())
                                                return this.id;
                                        }).get();

                InsertListToProjectStats(projectIdList, brokerId, $(location).attr("href"), actionText[4]);

            }, scrollTimer));
        });
    }

    this.recordProjectsAfterSearch = function (selector, brokerId, scrollTimer) {
        clearTimeout($.data(this, "scrollTimer"));
        $.data(this, "scrollTimer", setTimeout(function () {
            var projectIdList = $(selector)
                                        .filter(':onScreen')
                                        .map(function () {
                                            if ($(this).find('img').isOnScreen() && $(this).find('div.projName').isOnScreen())
                                                return this.id;
                                        }).get();

            InsertListToProjectStats(projectIdList, brokerId, $(location).attr("href"), actionText[4]);

        }, scrollTimer));
    }

    this.recordNearbyProjectStats = function (projectId, brokerId, pageUrl, action, hrefVal) {
        InsertToProjectStats(projectId, brokerId, pageUrl, action, hrefVal);
    }

    this.recordRealtorImpression = function (selector, brokerId, scrollTimer) {
        if (realtorImpression) {
            clearTimeout(realtorImpression);
        }
        realtorImpression = setTimeout(function () {
            var realtorIdList = $(selector).filter(':onScreen').map(function () {
                return $(this).attr("realtorid");
            });
            if ($(arr_realtors).not(realtorIdList).length == 0 && $(realtorIdList).not(arr_realtors).length == 0) {
                return;
            }
            if (realtorIdList.length === 0) return;
            arr_realtors = realtorIdList;

            for (var i = 0; i < realtorIdList.length; i++) {
                InsertToProjectStats(ProjectID, brokerId, $(location).attr("href"), "Realtor=" + realtorIdList[i] + ", Impression");
            }

        }, scrollTimer);
    }

    this.recordCouponImpression = function () {
        $(window).scroll(function () {
            InsertCouponImpression();
        });
    }

    this.recordAdsImpression = function (first) {

      /*  adsImpressionTime = setInterval(function () {
            var selectorads = $("[id$=divAdvertisement] img");
            var AdsIdList = $(selectorads).filter(':onScreen').map(function () {
                return $(this).attr("adsid");
            }).get();

            var allads = $(selectorads).map(function () {
                return $(this).attr("adsid");
            }).get();
             
            if (allads.length == arrads.length) {
                clearTimeout(adsImpressionTime);
                return;
            }
            for (var ic = 0;ic<AdsIdList.length; ic++) {
                if ($.inArray(AdsIdList[ic], arrads) == -1) {
                    arrads.push(AdsIdList[ic]);

                    var pid = -1;
                    if (typeof ProjectID != 'undefined')
                        pid = ProjectID;

                    var bid = -1;
                    if (typeof brokerId != 'undefined')
                        bid = brokerId;

                    InsertToProjectStats(pid, bid, window.location.href, "Impression on Advertisement - " + AdsIdList[ic]);
                }
            }
        }, 500);*/

        var imgAdvertisements = [].slice.call(document.querySelectorAll(".imgAdvertisement"));

        if ("IntersectionObserver" in window) {
            let AdvertisementsObserver = new IntersectionObserver(function (entries, observer) {
                entries.forEach(function (entry) {
                    if (entry.isIntersecting) {
                        let imgAdver = entry.target;


                        var pid = -1;
                        if (typeof ProjectID != 'undefined')
                            pid = ProjectID;

                        var bid = -1;
                        if (typeof brokerId != 'undefined')
                            bid = brokerId;

                        var InsertProj = true;

                        if ($(imgAdver).hasClass("Refresh"))
                        {
                            if ($(imgAdver).hasClass("Banner"))
                            {
                                if ($(imgAdver).hasClass("FirstLoad"))
                                    $(imgAdver).removeClass("FirstLoad");
                                else {

                                    InsertProj = false;
                                    ReLoadTopAdvertisment(pid, bid);
                                }
                            }
                            else
                            {
                               
                                if ($(imgAdver).hasClass("FirstLoad"))
                                    $(imgAdver).removeClass("FirstLoad");
                                else {

                                    InsertProj = false;
                                    ReLoadAdvertisments(pid, bid, $(imgAdver));
                                }
                                
                            }

                        }
                        if (typeof $(imgAdver).attr("adsid") != "undefined")
                        if (InsertProj && $(imgAdver).attr("adsid") != "" && $(imgAdver).attr("adsid") != "-1")
                            InsertToProjectStats(pid, bid, window.location.href, "Impression on Advertisement - " + $(imgAdver).attr("adsid"));
                       

                    }
                });
            });

            imgAdvertisements.forEach(function (imgAdver) {
                AdvertisementsObserver.observe(imgAdver);
            });
        }



        if (typeof ProjectID != 'undefined') {
            adsBottomLine = setInterval(function () {
                var selectorads = $(".discount-wrapper");
                var AdsIdList = $(selectorads).filter(':onScreen');

                var pid = -1;
                if (typeof ProjectID != 'undefined')
                    pid = ProjectID;

                var bid = -1;
                if (typeof brokerId != 'undefined')
                    bid = brokerId;
                var adslink = $(selectorads).find('a');
                var adstitle = '';
                if (adslink.length > 0) {
                    adstitle = ' - '+ $(adslink).attr('addname');
                }
                InsertToProjectStats(pid, bid, window.location.href, "Impression on Bottomline ads" + adstitle);
                clearTimeout(adsBottomLine);
            }, 500);
        } 
    }

    this.recordFinAnAgentOnScroll = function (selector, scrollTimer) {

        if (findAnAgentImpression) {
            clearTimeout(findAnAgentImpression);
        }
        findAnAgentImpression = setTimeout(function () {
            var realtorIdList = $(selector).filter(':onScreen').map(function () {
                return $(this).attr("brid");
            }).get();

            
            var _FilteredList = RemoveDupicateItems(arr_findAnAgent, realtorIdList);
            arr_findAnAgent = realtorIdList;
            if (_FilteredList.length === 0) return;

            InsertAgentListToProjectStats(-2, _FilteredList, $(location).attr("href"), "Impression");

        }, scrollTimer);

    }

}

var InsertCouponImpression = function () {
    var $couponCard = $(".coupon .style-card.impression");

    if ($couponCard.length < 1) return;

    var $onScreenCard = $couponCard.filter(':onScreen');

    $.each($onScreenCard, function () {
        var couponTitle = $(this).closest(".coupon").find(".PurchaseInfo").text().trim();
        var amount = $(this).find(".adBoxesAmount").text().trim();
        var description = $(this).find(".adBoxesInfo").text().split("\n");

        var action = "Impression: " + couponTitle + " - " + amount;

        $.each(description, function (index, value) {
            action = action + " " + value.trim();
        });

        new ProjectStats().recordProjectStats(-1, -1, document.location.href, action, 3);

        $(this).removeClass("impression");
    });
}


function RemoveDupicateItems(OldArray, NewArray) {

    var newList = [];

    for (var i = 0; i < NewArray.length; i++) {
        if ($.inArray(NewArray[i], OldArray) == -1) {
            newList.push(NewArray[i]);
        }
    }
    return newList;
}

var ProjectStatsUtil = {
    GetPageUrl: function () {
        if (!window.location.origin) window.location.origin = window.location.protocol + "//" + window.location.host;
        return window.location.origin + document.location.pathname;
    }
}

function InsertToProjectStats(projectId, brokerId, pageUrl, action, hrefVal, callback) {
    if (typeof isStaffUser !== 'undefined' && isStaffUser) return;

 
    projectId = typeof projectId === 'undefined' ? -2 : projectId;
    brokerId = typeof brokerId === 'undefined' ? -2 : brokerId;
    var referrer = document.referrer == undefined ? '' : document.referrer;
    
    var params = JSON.stringify({ 'projectId': projectId, 'brokerId': brokerId, 'pageUrl': encodeURI(pageUrl), 'action': encodeURIComponent(action), 'referrerUrl': encodeURI(referrer), 'pageTitle': $(document).find("title").text() });
    $.ajax({
        type: "POST",
        url: "/WorkflowManagerService.asmx/InsertToProjectStats2",
        data: params,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        beforeSend: function () { },
        complete: function () { },
        success: function (data) {
            if (callback !== undefined)
                callback();
            return true;
        },
        error: function (a, b, c) {
        }
    });
}

function InsertToStats(projectId, brokerId, leadId, pageUrl, action, hrefVal, callback) {
    if (typeof isStaffUser !== 'undefined' && isStaffUser) return;

   
    projectId = typeof projectId === 'undefined' ? -2 : projectId;
    brokerId = typeof brokerId === 'undefined' ? -2 : brokerId;
    var referrer = document.referrer == undefined ? '' : document.referrer;
    var params = JSON.stringify({ 'projectId': projectId, 'brokerId': brokerId, 'leadId': leadId, 'pageUrl': encodeURI(pageUrl), 'action': escape(action),  'referrerUrl': encodeURI(referrer), 'pageTitle': $(document).find("title").text() });
    
    $.ajax({
        type: "POST",
        url: "/WorkflowManagerService.asmx/InsertToProjectStats2",
        data: params,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        beforeSend: function () { },
        complete: function () { },
        success: function (data) {
            if (hrefVal !== undefined && hrefVal.length > 0 && hrefVal !== "javascript:void(0)")
                window.location.href = hrefVal;
            else if (callback !== undefined)
                callback();
            return true;
        },
        error: function (a, b, c) {
        }
    });
}

function InsertToGoogleAnalytics(options) {
    if(typeof ga !== 'undefined') {
        ga('send', {
            'hitType': 'pageview',
            'page': window.location.pathname + '?eventName=' + options.eventName + '&eventValue=' + options.value,
            'title': document.title
        });
    }

    if (typeof gtag !== 'undefined') {
        gtag('event', {
            'hitType': 'pageview',
            'page': window.location.pathname + '?eventName=' + options.eventName + '&eventValue=' + options.value,
			'title': document.title,
			'send_to': 'G-R6WWJN6LCB'
        });
    }
}

function InsertListToProjectStats(projectIdList, brokerId, pageUrl, action) {
    if (typeof isStaffUser !== 'undefined' && isStaffUser) return;

    var _FilteredList = RemoveDupicateItems(arr_projects, projectIdList);
    arr_projects = projectIdList;
    if (_FilteredList.length === 0) return;

    var referrer = document.referrer == undefined ? '' : document.referrer;
    $.ajax({
        type: "POST",
        url: "/WorkflowManagerService.asmx/InsertListToProjectStats",
        data: "{ 'projectIdList': " + JSON.stringify(_FilteredList) + ", 'brokerId': '" + brokerId + "', 'pageUrl': '" + encodeURI(pageUrl) + "', 'action': '" + escape(action) + "', 'referrerUrl': '" + encodeURI(referrer) + "', 'pageTitle': '"+ $(document).find("title").text()+"' }",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        beforeSend: function () { },
        complete: function () { },
        success: function (data) {
        },
        error: function (a, b, c) {
        }
    });
}

function resizeImg(img) {
    var imgwidth = img.naturalWidth;
    var imgheight = img.naturalHeight;
    var popupwidth = $(window).width();
    var popupheight = $(window).height();
    var scale = popupheight / imgheight;
    var scaledwidth = scale * imgwidth;

    if (scaledwidth < popupwidth) {
        img.style["height"] = "100vh";
        img.style["width"] = "auto";
    }
    else if (scaledwidth == popupwidth) { }
    else {
        img.style["width"] = "100vw";
        img.style["height"] = "auto";
    }
}

var lazyImages = [].slice.call(document.querySelectorAll("img[data-src]"));

if ("IntersectionObserver" in window) {
	let lazyImageObserver = new IntersectionObserver(function (entries, observer) {
		entries.forEach(function (entry) {
			if (entry.isIntersecting) {
				let lazyImage = entry.target;
				if(lazyImage.dataset.src) lazyImage.src = lazyImage.dataset.src;
				lazyImageObserver.unobserve(lazyImage);
			}
		});
	});

	lazyImages.forEach(function (lazyImage) {
		lazyImageObserver.observe(lazyImage);
	});
} else {
    // Possibly fall back to a more compatible method here
    $('img:not(([src])[data-src]').attr('src', $(this).attr('data-src'));
}


var currentPreview;

$(".fullscreenVidIcon").click(function () {
    $('#imgFull').attr('style', 'display:none;');
    $(this).attr('style', 'display:none;');
});

function galleryPrev() {
    var previous = currentPreview.previousElementSibling;
    if ($(currentPreview).attr('href') === undefined) {
        if ($(previous).attr('href') === undefined)
        document.getElementById("imgFull").src  = $(currentPreview).prev().find(".thumbnailFrame").children().attr('src');
        currentPreview = currentPreview.previousElementSibling;
    }
    else {
        var videoFrame = $('#videoFrame').length;
        var galleryImage = $('#imgFull').length;
        if (previous.classList.contains("galleryPreviewVideo")) {
            if (videoFrame != null) {
                $('#videoFrame').attr('src', '');
            }

            if (galleryImage != null) {
                $('#imgFull').removeAttr('style');
            }

            var imageURL = $(previous).find('img').attr('src');
            $('#imgFull').attr('src', imageURL);
            var videoURL = $(previous).attr('href');
            $('#fullscreenFloorImage').find('.fullscreenVidIcon').removeAttr('style');
            $('#fullscreenFloorImage').find('.fullscreenVidIcon').attr('href', videoURL);
            currentPreview = currentPreview.previousElementSibling;
        }
        else if (previous.classList.contains("galleryPreviewVR")) {
            if (previous.classList.contains("youtubeLink")) {
                var videoFrame = $('#videoFrame').length;
                var videoURL = $(previous).attr('href');
                $('#imgFull').attr('style', 'display:none;');
                $('#videoFrame').attr('src', videoURL);
                currentPreview = currentPreview.nextElementSibling;
            }
            else {
                var videoFrame = $('#videoFrame').length;
                var galleryImage = $('#imgFull').length;
                var videoURL = $(previous).attr('href');
                if (videoFrame != null) {
                    $('#videoFrame').attr('src', videoURL);
                }

                $('#imgFull').attr('style', 'display:none;');
                currentPreview = currentPreview.nextElementSibling;
            }
        }
    }
}

function galleryNext() {
    var next = currentPreview.nextElementSibling
    if ($(next).attr('href') === undefined) {
        $('#videoFrame').attr('src', '');
        $('#imgFull').removeAttr('style');
        $('#fullscreenFloorImage').find('.fullscreenVidIcon').attr('style', 'display:none;');
        document.getElementById("imgFull").src = $(currentPreview).next().find(".thumbnailFrame").children().attr('src');
        currentPreview = currentPreview.nextElementSibling;
    }
    else {
        var videoFrame = $('#videoFrame').length;
        var galleryImage = $('#imgFull').length;
        if (next.classList.contains("galleryPreviewVideo")) {
            if (videoFrame != null) {
                $('#videoFrame').attr('src', '');
            }

            if (galleryImage != null) {
                $('#imgFull').removeAttr('style');
            }

            var imageURL = $(next).find('img').attr('src');
            $('#imgFull').attr('src', imageURL);
            var videoURL = $(next).attr('href');
            $('#fullscreenFloorImage').find('.fullscreenVidIcon').removeAttr('style');
            $('#fullscreenFloorImage').find('.fullscreenVidIcon').attr('href', videoURL);
            currentPreview = currentPreview.nextElementSibling;
        }
        else if (next.classList.contains("galleryPreviewVR")) {
            if (next.classList.contains("youtubeLink")) {
                var videoFrame = $('#videoFrame').length;
                var videoURL = $(next).attr('href');
                $('#imgFull').attr('style', 'display:none;');
                $('#videoFrame').attr('src', videoURL);
                currentPreview = currentPreview.nextElementSibling;
            }
            else {
                var videoFrame = $('#videoFrame').length;
                var galleryImage = $('#imgFull').length;
                var videoURL = $(next).attr('href');
                if (videoFrame != null) {
                    $('#videoFrame').attr('src', videoURL);
                }

                $('#imgFull').attr('style', 'display:none;');
                currentPreview = currentPreview.nextElementSibling;
            }
        }
    }
}

function InsertAgentListToProjectStats(projectId, brokerIdList, pageUrl, action) {
    if (typeof isStaffUser !== 'undefined' && isStaffUser) return;

    //console.log(brokerIdList);
    var referrer = document.referrer == undefined ? '' : document.referrer;
    $.ajax({
        type: "POST",
        url: "/WorkflowManagerService.asmx/InsertAgentListToProjectStats",
        data: "{'projectId' : '" + projectId + "', 'brokerIdList': " + JSON.stringify(brokerIdList) + ", 'pageUrl': '" + encodeURI(pageUrl) + "', 'action': '" + escape(action) + "', 'referrerUrl': '" + encodeURI(referrer) + "', 'pageTitle':'" + $(document).find("title").text() + "' }",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        beforeSend: function () { },
        complete: function () { },
        success: function (data) {
        },
        error: function (a, b, c) {
        }
    });
}


var UriParser = {
    getUri : function(urlString){
        var parser = document.createElement('a');
        parser.href = urlString;
        //parser.href = "http://example.com:3000/pathname/?search=test#hash";

        parser.protocol; // => "http:"
        parser.hostname; // => "example.com"
        parser.port;     // => "3000"
        parser.pathname; // => "/pathname/"
        parser.search;   // => "?search=test"
        parser.hash;     // => "#hash"
        parser.host;     // => "example.com:3000"
        return parser;
    }
}
var condoplayer = "condoplayer";
var divvideoPlayPause = "#divvideoPlayPause";
var purchaseDate = {};
var closingDate = {};
var isAgentSugg = false;
var isValidAgent = false;
var isValidationSucceed = false;
$(window).load(function () {
    FB.init({
        appId: FacebookAppId,

        status: true,
        cookie: true,
        xfbml: true
    });
});

$(document).ready(function () {
    InsertCouponImpression();
    new ProjectStats().recordCouponImpression();

    if (typeof google != 'undefined')
        var autocomplete = new google.maps.places.Autocomplete((document.getElementById('input_Address')), { types: ['geocode'] });

    $("#lnkLoginPopup").attr('href', $("#lnkPublicResponsiveLogin").attr('href'));

    if (!$(".leftLayer").is(':visible')) {
        condoplayer = "condoplayer2";
        divvideoPlayPause = "#divvideoPlayPause2";
    }

    BottomLine.AdjustRegistrationForm();
    BottomLine.OpenDetailPage();
    BottomLine.InitializeRegistrationEvent();
    BottomLine.OpenVideo();
    BottomLine.BackPage();

    var magnilist = [
                   { id: '#lnkSendRewardEmail', width: 361, height: 550, type: 'iframe', },
                   { id: '#lnkLoginPopup', width: 320, height: 414, type: 'iframe', openCallback: function () { magnific_helpers.SetContentHight(); } },
                   { id: '#lnkThanksForSharingPopup', width: 320, height: 365, type: 'iframe', openCallback: function () { magnific_helpers.SetContentHight(); } },
                   { id: '#lnkOnlyThankYouPopup', width: 320, height: 200, type: 'iframe', openCallback: function () { magnific_helpers.SetContentHight(); } },
                   { id: '#lnkBottomLineUnsubscribe', width: 320, height: 200, type: 'inline' },
                   {
                       id: '#lnkFacebookPopup', width: 395, height: 395, type: 'iframe',
                       changeCallback: function () { console.log("my log"); },
                       closeCallBack: function () { console.log("my close log"); },
                       aftercloseCallBack: function () { console.log("my close log"); }
                   },
                    {
                        id: '#lnkTwitterPopup', width: 395, height: 395, type: 'iframe',
                        changeCallback: function () { console.log("my log"); },
                        closeCallBack: function () { console.log("my close log"); },
                        aftercloseCallBack: function () { console.log("my close log"); }
                    }

    ];
    jQuery.each(magnilist, function (i, val) {
        magnificobj(val);
    });

    var bottomlinesuccess = getUrlVar('success');
    if (ProspectID != "0" && bottomlinesuccess == 'true') {
        OpenOnlyThanksPopup();
    }

    var unsubscribe = $("#bottomLineUnsubscribe").val();
    if ($.trim(unsubscribe).toLowerCase() == "true") {
        $("#lnkBottomLineUnsubscribe").click();
    }

    var showLoginPopUp = $("#showLoginPopUp").val();
    if ($.trim(showLoginPopUp).toLowerCase() == "true") {
        OpenLoginBottomLinePage();
    }

    $(".BottomLineVersion2").each(function (index) //SSD+US15204
    {

        $(".BottomLineVersion2")[index].onclick = function () { 

          /*  if (ProspectID == 0) {
                parent.$("#lnkPublicResponsiveLogin").attr('href', "/LoginPop.aspx?from=urlReferrer&pageUrl=/bottomline-register");
                $('#lnkPublicResponsiveLogin').trigger('click');
            }
            else*/
                parent.window.location.href = "/bottomline-register";
        };
    });


});

var BottomLineValidation = {
    CheckIfValidAgentExist: function (agentId, callback) {
        var result = false;
        $.ajax({
            type: "POST",
            async: false,
            url: "/IsValidAgent",

            data: "{'agentId': '" + agentId + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                if (data == false) {
                    result = false;
                }
                else {
                    result = true;
                }
            },
            complete: function () {
                if (typeof callback != 'undefined') {
                    callback(result);
                }
            },
            error: function (a, b, c) {
                alert(b);
            }
        });

        return result;
    }
};

function onShareClick(item) {

    var type = $(item).attr('data-type');

    OpenSocialWindow(type);

}
function OpenLoginBottomLinePage() {
    $("#lnkPublicResponsiveLogin").attr('href', "/LoginPop.aspx?from=urlReferrer&pageUrl=/bottomline-register");
    OpenLoginPopup();
}
function CloseFancyAndOpenLogin() {
    $.magnificPopup.close();

    if (ProspectID > 0)
        OpenThanksForSharingPopup();
    else {
        OpenLoginBottomLinePage();
    }
}
function CloseMagnificBox() {
    $.magnificPopup.close();
}
function OpenThanksForSharingPopup() {
    $('#lnkThanksForSharingPopup').trigger('click');
}

function OpenOnlyThanksPopup() {
    $('#lnkOnlyThankYouPopup').trigger('click');
}

function OpenLoginPopup() {
    $('#lnkPublicResponsiveLogin').click();
}
function PostFollowMessageOnFaceBook() {

    FB.login(function (response) {
        if (response.authResponse) {
            FB.api('/me', function (fbData) {

                FB.api('/me/feed', 'post', { message: 'acnbcbsakjdjkas' }, function (response) {
                    if (!response || response.error) {
                        alert('Error occured');
                    } else {
                        alert('Post ID: ' + response.id);
                    }
                });

            });
        } else {
            console.log('User cancelled login or did not fully authorize.');
        }
    }, { scope: 'email,publish_actions', return_scopes: true });


};


function PostFollowMessageOnTwitter() {



};
function PostFollowMessageOnFaceBook2() {
    var message_str = 'Facebook JavaScript Graph API Tutorial';
    FB.api('/me/feed', 'post', { message: message_str }, function (response) {
        if (!response || response.error) {
            alert("Couldn't Publish Data");
        } else {

            $.ajax({
                type: "POST",
                url: "/Stateless.asmx/SendEmailAndGetHasLeadsForProspect",
                data: JSON.stringify({ 'prospectID': emailAddress }),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                cache: false,

                success: function (data) {
                    var results = JSON.parse(data.d);

                    if (results.returnCode == "0") {
                        if ($("#lnkThanksForSharingPopup").attr('href').indexOf('HasLeads') < 0)
                            $("#lnkThanksForSharingPopup").attr('href', $("#lnkThanksForSharingPopup").attr('href') + "&HasLeads=0");
                    }
                    else {
                        if ($("#lnkThanksForSharingPopup").attr('href').indexOf('HasLeads') < 0)
                            $("#lnkThanksForSharingPopup").attr('href', $("#lnkThanksForSharingPopup").attr('href') + "&HasLeads=1");
                    }
                    OpenThanksForSharingPopup();
                },
                error: function (a, b, c) {
                    alert(a.responseText);
                }
            });
        }
    });

};

function OnlySendEmailAndForProspect() {

    $.ajax({
        type: "POST",
        url: "/Stateless.asmx/SendEmailAndGetHasLeadsForProspect",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,

        success: function (data) {

        },
        error: function (a, b, c) {
            alert(a.responseText);
        }
    });

}



function GetHasLeadsForProspect() {

    $.ajax({
        type: "POST",
        url: "/Stateless.asmx/GetHasLeadsForProspect",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,

        success: function (data) {
            /* if (ProspectID > 0) {*/
            var results = JSON.parse(data.d);
            if (results.returnCode == "0") {
                if ($("#lnkThanksForSharingPopup").attr('href').indexOf('HasLeads') < 0)
                    $("#lnkThanksForSharingPopup").attr('href', $("#lnkThanksForSharingPopup").attr('href') + "&HasLeads=0");
            }
            else {
                if ($("#lnkThanksForSharingPopup").attr('href').indexOf('HasLeads') < 0)
                    $("#lnkThanksForSharingPopup").attr('href', $("#lnkThanksForSharingPopup").attr('href') + "&HasLeads=1");
            }
            OpenThanksForSharingPopup();

        },
        error: function (a, b, c) {
            alert(a.responseText);
        }
    });

}
function SendEmailAndGetHasLeadsForProspect() {

    $.ajax({
        type: "POST",
        url: "/Stateless.asmx/SendEmailAndGetHasLeadsForProspect",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        cache: false,

        success: function (data) {
            /* if (ProspectID > 0) {*/
            var results = JSON.parse(data.d);
            if (results.returnCode == "0") {
                if ($("#lnkThanksForSharingPopup").attr('href').indexOf('HasLeads') < 0)
                    $("#lnkThanksForSharingPopup").attr('href', $("#lnkThanksForSharingPopup").attr('href') + "&HasLeads=0");
            }
            else {
                if ($("#lnkThanksForSharingPopup").attr('href').indexOf('HasLeads') < 0)
                    $("#lnkThanksForSharingPopup").attr('href', $("#lnkThanksForSharingPopup").attr('href') + "&HasLeads=1");
            }
            OpenThanksForSharingPopup();

        },
        error: function (a, b, c) {
            alert(a.responseText);
        }
    });

}

function OpenSocialWindow(type) {
    var x = screen.width / 2 - 700 / 2;
    var y = screen.height / 2 - 450 / 2;
    var options = 'height=320, width=640, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, directories=no, status=no,left=' + x + ',top=' + y;


    if (type == "facebook") {


        FB.ui(
                {
                    method: 'share',
                    href: facebookShareURL

                }, function (response) {
                    var result = JSON.stringify(response);
                    if (!response.hasOwnProperty("error_code")) {
                        GetHasLeadsForProspect();
                        AddBottomLineRecord('facebook');
                        BottomLine.InsertToStats('Shared via Facebook', 'click');
                    }
                    /*if (result.indexOf('post_id') > -1) {
                      
                    }*/
                });
    }
    else if (type == "twitter") {



        newwindow2 = window.open(decodeURIComponent(twitterShareURL), 'name', options);
        if (window.focus) { newwindow2.focus() }

        var loop2 = setInterval(function () {

            if (newwindow2.closed) {
                clearInterval(loop2);

                GetHasLeadsForProspect();
                AddBottomLineRecord('twitter');
                BottomLine.InsertToStats('Shared via Twitter', 'click');
            }
        }, 1000);

    }
    else if (type == "email") {
        $('#lnkSendRewardEmail').trigger('click');
        BottomLine.InsertToStats('Shared via Email', 'click');
    }
    return false;
}

function adjustPlaceholder() {
    $("#input_fullName").attr('placeholder', '* Your Full Name');
    $("#input_AgreementName").attr('placeholder', '* Name on Agreement');
    $("#input_PhoneAgreement").attr('placeholder', '* Phone Number on Agreement');
    $("#input_EmailAgreement").attr('placeholder', '* Email on Agreement');
    $("#input_InfoRequest").attr('placeholder', '* Info Request#');
    $("#input_TransactionType").attr('placeholder', '* Transaction Type');

    if ($("#input_AgentName").hasClass("requiredField"))
        $("#input_AgentName").attr('placeholder', '* Agent Name');
    else
        $("#input_AgentName").attr('placeholder', 'Agent Name');

    $("#input_Development").attr('placeholder', '* Development');
    $("#input_Developer").attr('placeholder', '* Developer(s)');
    $("#input_Address").attr('placeholder', '* Address');
    $("#input_UnitNumber").attr('placeholder', '* Unit Number');
    $("#input_DateOfPurchase").attr('placeholder', '* Date of Purchase');
    $("#input_ClosingDate").attr('placeholder', '* Projected Closing Date');
}

$(document).click(function (event) {
    if ($("div#AgentSearchSuggestionDiv").is(":visible") && $(event.target).closest("div#AgentSearchSuggestionDiv").length < 1) {
        $("div#AgentSearchSuggestionDiv").css("display", "");
    }

    if ($("div#DeveloperSuggestionDiv").is(":visible") && $(event.target).closest("div#DeveloperSuggestionDiv").length < 1) {
        $("div#DeveloperSuggestionDiv").css("display", "");
    }

    if ($("div#dvPurchaseDatePicker").is(":visible") && $(event.target).closest("div#dvPurchaseDatePicker").length < 1 && $(event.target).closest("#input_DateOfPurchase").length < 1) {
        $("div#dvPurchaseDatePicker").removeClass("open-datePicker");
    }

    if ($("div#dvClosingDatePicker").is(":visible") && $(event.target).closest("div#dvClosingDatePicker").length < 1 && $(event.target).closest("#input_ClosingDate").length < 1) {
        $("div#dvClosingDatePicker").removeClass("open-datePicker");
    }

    if ($("div.TransactionTypeFloatingDiv").is(":visible") && $(event.target).closest("div#transactionType").length < 1) {
        $("div.TransactionTypeFloatingDiv").css("display", "none");
    }
});

function validateEmail(email) {
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
}

function validationClear(element) {
    element.parent().parent().removeClass("TextBoxValidationError");
    element.next().css({ "visibility": "hidden" });
    element.next().next().css({ "visibility": "hidden" });
}

function validationEffect(element) {

    if (element.attr('id') == 'input_Development') {
        if ($('#input_Development').attr('data-value').trim().length > 0 && $('#input_Development').attr('data-value') > 0) {
            return true;
        }
    } else if (element.attr('id') == 'input_AgentName') {
        if ($('#input_AgentName').attr('data-value').trim().length > 0 && $('#input_AgentName').attr('data-value') > 0) {
            return true;
        }
    } else if (element.attr('id') == 'input_UnitNumber') {
        if (BottomLine.TransactionType == 1) {
            return true;
        }
    }


    if (element.val() == "") {
        element.parent().parent().addClass("TextBoxValidationError");

        if (element.attr('id') == 'input_EmailAgreement') {
            element.next().text("Required");
        }

        element.next().css({ "visibility": "visible" });
    } else {
        if (element.attr('id') == 'input_EmailAgreement') {
            if (!validateEmail(element.val())) {
                element.next().css({ "visibility": "visible" });
                element.next().text("Enter Correct Email");
                isValidationSucceed = false;
            } else {
                element.parent().parent().removeClass("TextBoxValidationError");
                element.next().css({ "visibility": "hidden" });
            }
        }
        else if (element.parent().parent().hasClass("TextBoxValidationError")) {
            element.parent().parent().removeClass("TextBoxValidationError");
            element.next().css({ "visibility": "hidden" });
        }
    }
}

function validationEffectForAgent(element) {
    element = $(element);
    if (element.attr('id') == 'input_AgentName' && $("#input_AgentName").hasClass("requiredField")) {
        if (($('#input_AgentName').attr('data-value').trim().length > 0 && $('#input_AgentName').attr('data-value') > 0) && isAgentSugg) {
            element.parent().parent().removeClass("TextBoxValidationError");
            element.next().next().css({ "visibility": "hidden" });
            return true;
        }
        else {

            var agentName = $('#input_AgentName').val().trim();
            agentName = agentName.length > 0 ? agentName : $('.agentName').html().trim();
            if (agentName != "") {
                element.parent().parent().addClass("TextBoxValidationError");
                element.next().css({ "visibility": "hidden" });
                element.next().next().css({ "visibility": "visible" });
            }
            else {
                element.parent().parent().addClass("TextBoxValidationError");
                element.next().css({ "visibility": "visible" });
                element.next().next().css({ "visibility": "hidden" });
            }
        }
    }

}
function validationCheck() {
    var elements = $(".requiredField");
    var length = elements.length;
    for (var i = 0; i < length; i++) {
        validationEffect($(elements[i]));
    }

}




function CheckIfValidAgent(agentId, callback) {
    //var searchData = agentId;
    var isValidAgent = false;
    if (agentId == "") {
        $(".AgentSearchSuggestionDiv").hide();
        isAgentSugg = false;
        return;
    }

    $.get("/IsValidAgent", { agentId: agentId }).done(function (data) {
        isValidAgent = (data == "false") ? false : true;

        callback();
    });
    return isValidAgent;
}




function isValidationSucceeded() {
    $('#registrationSave').prop('disabled', true);
    ShowLoader();
    isValidationSucceed = true;
    validationCheck();
    var elements = $(".requiredField");
    var length = elements.length;
    for (var i = 0; i < length; i++) {
        if ($(elements[i]).val() == "") {

            if ($(elements[i]).attr('id') == 'input_AgentName') {
                if (!$('#input_AgentName').attr('data-value').trim().length > 0) {
                    isValidationSucceed = false;
                }
            }
            else if ($(elements[i]).attr('id') == 'input_Development') {
                if (BottomLine.TransactionType == 0 && !$('#input_Development').attr('data-value').trim().length > 0 && !$('#input_Development').attr('data-value') > 0)
                    isValidationSucceed = false;
            }
            else if ($(elements[i]).attr('id') == 'input_Address') {
                if (BottomLine.TransactionType == 1)
                    isValidationSucceed = false;
            }
            else if ($($(elements[i]).attr('id') == 'input_UnitNumber')) {
                if (BottomLine.TransactionType == 0)
                    isValidationSucceed = false;
            }
            else {
                isValidationSucceed = false;
            }
        }
    }


    if ($('#input_AgentName').hasClass("requiredField")) {

        var agentName = $('#input_AgentName').val().trim();
        agentName = agentName.length > 0 ? agentName : $('.agentName').html().trim();
        if (agentName != "") {
            var agentId = $('#input_AgentName').attr('data-value').trim();
            if (agentId == "") {
                $(".AgentSearchSuggestionDiv").hide();
                validationEffectForAgent("#input_AgentName");
                isAgentSugg = false;
                return;
            }
            BottomLineValidation.CheckIfValidAgentExist(agentId, ifAgentNameAlreadyExists);
        }
        else {
            validationEffectForAgent("#input_AgentName");
            isValidationSucceed = false;
        }
    }
    else
    {
        if (isValidationSucceed)
            ifAgentNameAlreadyExists(true);

    }

    if (!isValidationSucceed) {
        $('#registrationSave').prop('disabled', false);
        HideLoader();
    }

}


function ifAgentNameAlreadyExists(result) {
    if (!result) {
        try {
            validationEffectForAgent("#input_AgentName");
            isValidationSucceed = false;
        }
        catch (err) { }
    }
    else {
        try {
            if (isValidationSucceed && result) {
                BottomLine.InsertToStats('Click on BottomLine Registration', 'click');
                saveRegistration();
            }
        }
        catch (err) { }

       
    }

    return result;
}



var RegData = {};

function RegistrationFormData() {
    RegData.FullName = $("#input_fullName").val();
    RegData.AgreementName = $("#input_AgreementName").val();
    RegData.AgreementPhone = $("#input_PhoneAgreement").val();
    RegData.AgreementEmail = $("#input_EmailAgreement").val();
    RegData.InfoRequest = $("#input_InfoRequest").val();
    RegData.TransactionType = $("#input_TransactionType").val();
    RegData.Address = $("#input_Address").val();
    RegData.UnitNumber = $("#input_UnitNumber").val();
    RegData.DateOfPurchase = $("#input_DateOfPurchase").val();
    /*//RegData.AgreementNumber = $("#input_AgreementNumber").val*/
    RegData.AgentID = $("#input_AgentName").attr("data-value");
    RegData.DevelopmentID = $("#input_Development").attr("data-value");
    RegData.ProjectedClosingDate = $("#input_ClosingDate").val();

    RegData.AirNumber = $("#input_AirNumber").val();
    RegData.PromoCode = $("#input_PromoCode").val();
    if (RegData.AgentID != "" && RegData.AgentID != "0")
        RegData.AgentName = $("#BrokerNameSelected .agentName").text().trim() + ' - ' + $("#BrokerNameSelected .brokerageName").text().trim();
    else
        RegData.AgentName = $("#input_AgentName").val();


    RegData.DevelopmentName = $("#input_Development").val();
    RegData.DeveloperName = $("#input_Developer").val();

    RegData.Notes = $("#input_NoteAgreement").val(); //SSD+US15204

    if (BottomLine.TransactionType === 0) {
        RegData.Address = "";
    }
    else if (BottomLine.TransactionType === 1) {
        RegData.DevelopmentID = "";
    }
}

function saveRegistration() {
    RegistrationFormData();
    $.post("/saveRegistration", RegData).done(function (data) {
        if (data == 1) {
            RegData = {};
            BottomLine.InsertToStats('BottomLine Registration Success', 'click');
            /*//$("#ancBottomLineRegistrationConfirm").trigger("click");*/
            window.location.href = BottomLine.PageUrl.BottomLineRegistrationConfirm;
        }
    });
}



function autoSuggest() {

    delay(function () {
        createSuggestionDiv();
    }, 500);
}

function developerAutoSuggest() {

    delay(function () {
        createDeveloperSuggestionDiv();
    }, 500);
}

var delay = (function () {
    var timer = 0;
    return function (callback, ms) {
        clearTimeout(timer);
        timer = setTimeout(callback, ms);
    };
})();


function getSuggestionData() {

}


function createDeveloperSuggestionDiv() {
    if ($("#input_InfoRequest").val() != 'Other / Not Sure') return;
    $(".DeveloperSuggestionDiv").empty();

    var searchData = $("#input_Development").val();

    if (searchData == "") {
        $(".DeveloperSuggestionDiv").hide();
        return;
    }

    $.get("/DeveloperAutoSuggestion", { DeveloperName: searchData }).done(function (data) {



        var length = data.length;

        if (length > 0) {
            $(".DeveloperSuggestionDiv").show();
        }


        DevelopmentDataStore = [];

        for (var i = 0; i < length; i++) {


            var newObject = {};

            newObject.projectId = data[i].projectId;
            newObject.developerName = data[i].developerName;
            newObject.projectName = data[i].projectName;

            DevelopmentDataStore.push(newObject);

            DeveloperSuggestionDOM(data[i].projectId, data[i].developerName, data[i].projectName);
        }
    });

}

var AgentSuggestDataStore = [];
var DevelopmentDataStore = [];

function createSuggestionDiv() {
    isValidAgent = false
    if ($('#input_AgentName').hasClass("requiredField")) {
        $("#input_AgentName").parent().parent().removeClass("TextBoxValidationError");
        $("#input_AgentName").next().next().css({ "visibility": "hidden" });
    }
    $(".AgentSearchSuggestionDiv").empty();

    var searchData = $("#input_AgentName").val();

    if (searchData == "") {
        $(".AgentSearchSuggestionDiv").hide();
        return;
    }

    $.get("/AgentAutoSuggestion", { projectName: searchData }).done(function (data) {


        var length = data.length;

        if (length > 0) {
            isAgentSugg = true;
            $(".AgentSearchSuggestionDiv").show();
        }
        else {
            isAgentSugg = false;
            validationEffectForAgent("#input_AgentName");
        }

        AgentSuggestDataStore = [];

        for (var i = 0; i < length; i++) {

            var newObject = {};

            newObject.BrokerID = data[i].BrokerID;
            newObject.BrokerName = data[i].BrokerName;
            newObject.BrokerageName = data[i].BrokerageName;
            newObject.Title = data[i].Title;
            AgentSuggestDataStore.push(newObject);

            AgentSuggestionDOM(data[i].BrokerID, data[i].BrokerName, data[i].BrokerageName, data[i].imgProfileImage, data[i].Title);
        }
    });
}

function displayNone(id) {
    $("#input_AgentName").removeAttr("readonly").attr("data-value", "").attr("placeholder", "Enter Agent Name").focus();
    $(id).hide();
}

function showAgentNameOnTextBox(id) {

    RegData.AgentID = id;

    $('#BrokerNameSelected').show();
    $('#input_AgentName').val("");

    var length = AgentSuggestDataStore.length;

    for (var i = 0; i < length; i++) {

        if (AgentSuggestDataStore[i].BrokerID == id) {

            var BrokerName = AgentSuggestDataStore[i].BrokerName;
            var BrokerageName = AgentSuggestDataStore[i].BrokerageName;

            $("#input_AgentName").attr('placeholder', '').attr("data-value", id)

            $($('#BrokerNameSelected').children()[0]).text(BrokerName);
            $($('#BrokerNameSelected').children()[1]).text(BrokerageName);

            $('.AgentSearchSuggestionDiv').hide();
            $("#section-agent").css("position", "relative");
        }
    }
}


function showDevelopmentNameOnTextBox(id) {

    RegData.DevelopmentID = id;

    $('#DevelopmentNameSelected').show();
    $('#input_Development').val("");

    var length = DevelopmentDataStore.length;

    for (var i = 0; i < length; i++) {

        if (DevelopmentDataStore[i].projectId == id) {

            var developerName = DevelopmentDataStore[i].developerName;
            var projectName = DevelopmentDataStore[i].projectName;

            $("#input_Development").attr('placeholder', '').attr("data-value", id);

            $('#input_Development').val(projectName);
            $('#input_Developer').val(developerName);

            $('.DeveloperSuggestionDiv').hide();

        }
    }
}


function DeveloperSuggestionDOM(projectId, text1, text2) {

    var suggestionDiv = $(".DeveloperSuggestionDiv");
    var WrapperDiv = $('<div/>', { click: function () { showDevelopmentNameOnTextBox($(this).attr('id')) } });
    var agentInfo = $('<div/>');
    var developerName = $('<div/>');
    var DevelopmentName = $('<div/>');
    var clearDiv = $('<div/>');

    agentInfo.addClass('agentInfo');
    DevelopmentName.addClass('agentName');
    clearDiv.addClass('clear');

    developerName.text(text1);
    DevelopmentName.text(text2);

    agentInfo.append(DevelopmentName);
    agentInfo.append(developerName);

    WrapperDiv.addClass('agentWrapperDiv');

    WrapperDiv.attr('id', projectId);

    WrapperDiv.append(agentInfo);
    WrapperDiv.append(clearDiv);

    suggestionDiv.append(WrapperDiv);

}



function AgentSuggestionDOM(BrokerID, text1, text2, imgProfileImage, title) {

    var suggestionDiv = $(".AgentSearchSuggestionDiv");
    var WrapperDiv = $('<div/>', { click: function () { showAgentNameOnTextBox($(this).attr('id')) } });
    var agentImage = $('<div/>');
    var agentInfo = $('<div/>');
    var developerName = $('<div/>');
    var salesPerson = $('<div/>');
    var DevelopmentName = $('<div/>');
    var img = $('<img/>');

    agentImage.addClass('agentImage');
    agentInfo.addClass('agentInfo');

    salesPerson.addClass('salesinfo')
    salesPerson.css('font-size', '11px');
    developerName.addClass('agentName');
    DevelopmentName.css('font-size', '11px');

    img.attr('src', imgProfileImage);
    agentImage.append(img);

    developerName.text(text1);
    DevelopmentName.text(text2);
    salesPerson.text(title);
    agentInfo.append(developerName);
    agentInfo.append(salesPerson);
    agentInfo.append(DevelopmentName);

    WrapperDiv.addClass('agentWrapperDiv');

    WrapperDiv.attr('id', BrokerID);

    WrapperDiv.append(agentImage);
    WrapperDiv.append(agentInfo);

    suggestionDiv.append(WrapperDiv);
    $("#section-agent").css("position", "");
}

var BottomLine = {
    TransactionType: 0,
    SiteName: "",
    FromBackPage: false,
    SiteDomain: $("input#siteDomain").val(),
    FacebookAppId: $("#facebookAppId").val(),
    TwitterShareText: $("#twitterShareText").val(),
    PageUrl: {
        BottomLine: "/BottomLine",
        BottomLineCoupon: "/BottomLine-Coupon",
        BottomLineVendors: "/BottomLine-Vendors",
        BottomLineRegistration: "/BottomLine-Register",
        BottomLineRegistrationConfirm: "/BottomLine-Registration-Confirm"
    },

    InsertToStats: function (action, eventname) {

        var url = "/InsertToStats";

        var statsModel = {
            PageUrl: location.href,
            Action: action,
            ReferrerUrl: encodeURI(document.referrer == undefined ? '' : document.referrer),
            PageTitle: $(document).find("title").text()
        }

        $.ajax({
            type: "POST",
            url: url,
            data: JSON.stringify(statsModel),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            cache: false,
            success: function (data) {
                if (typeof data != 'undefined' && data == true) {

                }
            },
            error: function (a, b, c) {
                var message = a.responseText;

            }
        });
    },
    InsertToGoogleAnalytics: function (options, action) {
        ga('send', 'event', action, options.eventName, options.value);
    },
    ChangeUrl: function (url) {
        if (!BottomLine.FromBackPage) {
            var newUrl = url;
            if (history.pushState) {
                history.pushState({
                    old_url: "/",
                    new_url: newUrl
                }, null, newUrl);
            }
        }

        BottomLine.FromBackPage = false;
    },
    UpdateBottomLineMenu: function (activeMenu) {
        $(".menuLinks").removeClass("selected");
        $("a[data-href='" + activeMenu + "']").parent().addClass("selected");
    },
    OpenVendors: function (ctrl) {
        BottomLine.SiteName = $(ctrl).attr("data-name");
        window.location.href = "/BottomLine-Vendors#" + BottomLine.SiteName;
    },
    OpenDetails: function (dataHref) {
        $("#" + dataHref).trigger("click");
    },
    OpenDetailPage: function () {
        $(".menuLinks").click(function () {
            var dataHref = $(this).find("a").attr("data-href");
            $("#" + dataHref).trigger("click");
        });
    },
    AdjustClass: function (className) {
        $("#actionDescription").removeClassPrefix("page-").addClass(className);
    },
    AdjustShareUrl: function (shareUrl) {

        shareUrl = BottomLine.SiteDomain + shareUrl;
        $("#facebookShareUrl").attr("href", shareUrl.toFacebookShareUrl(BottomLine.FacebookAppId));
        $("#twitterShareUrl").attr("href", shareUrl.toTwitterShareUrl(BottomLine.TwitterShareText));
    },
    ChageMetaUrl: function (url) {
        $("meta[property='og:url']").attr("content", BottomLine.SiteDomain + url);
    },
    AdjustRegistrationForm: function () {
        var infoRequest = $("#input_InfoRequest").val();

        if (infoRequest == "Other / Not Sure") {
            $("#input_AgentName").removeAttr("readonly").attr("placeholder", "Enter Agent Name");
            $("#input_Development").removeAttr("readonly");
        }
        else {
            if ($("#input_AgentName").length > 0 && ($("#input_AgentName").attr("data-value").trim().length < 1 || $("#input_AgentName").attr("data-value") < 1)) {
                $("#input_AgentName").removeAttr("readonly").attr("placeholder", "Enter Agent Name");
            }
            else {
            }

            $("#input_Development").attr("readonly", "readonly");
        }
    },
    OnCompleteBottomLineVendors: function () {
        if (BottomLine.SiteName.length > 0) {
            var scrollTop = $("div[data-name='" + BottomLine.SiteName + "']").position().top;
            $(document).scrollTop(scrollTop);
            BottomLine.AdjustClass("page-bottomlinevendors");
            BottomLine.ChangeUrl(BottomLine.PageUrl.BottomLineVendors);
            BottomLine.ChageMetaUrl(BottomLine.PageUrl.BottomLineVendors);
            BottomLine.AdjustShareUrl(BottomLine.PageUrl.BottomLineVendors);
            BottomLine.UpdateBottomLineMenu("ancBottomLineCoupon");
            BottomLine.SiteName = "";
        }
    },
    OnCompleteBottomLineInfo: function () {
        $(document).scrollTop(0);
        BottomLine.AdjustClass("page-bottomlineinfo");
        BottomLine.ChangeUrl(BottomLine.PageUrl.BottomLine);
        BottomLine.ChageMetaUrl(BottomLine.PageUrl.BottomLine);
        BottomLine.AdjustShareUrl(BottomLine.PageUrl.BottomLine);
        BottomLine.UpdateBottomLineMenu("ancBottomLineInfo");
    },
    OnCompleteProgramDetails: function () {
        $(document).scrollTop(0);
        BottomLine.AdjustClass("page-botttomlineprogramdetails");
        BottomLine.ChangeUrl(BottomLine.PageUrl.BottomLineCoupon);
        BottomLine.ChageMetaUrl(BottomLine.PageUrl.BottomLineCoupon);
        BottomLine.AdjustShareUrl(BottomLine.PageUrl.BottomLineCoupon);
        BottomLine.UpdateBottomLineMenu("ancBottomLineCoupon");
    },
    OnCompleteRegistrationForm: function () {
        $(document).scrollTop(0);
        BottomLine.AdjustClass("page-bottomlineregistration");
        BottomLine.ChangeUrl(BottomLine.PageUrl.BottomLineRegistration);
        BottomLine.ChageMetaUrl(BottomLine.PageUrl.BottomLine);
        BottomLine.AdjustShareUrl(BottomLine.PageUrl.BottomLine);
        BottomLine.UpdateBottomLineMenu("ancBottomLineRegister");
        var RegData = {};

        BottomLine.InitializeRegistrationEvent();
    },
    OnCompleteBottomLineRegistrationConfirm: function () {
        $(document).scrollTop(0);
        BottomLine.AdjustClass("page-bottomlineregconfirm");
        BottomLine.ChangeUrl(BottomLine.PageUrl.BottomLineRegistrationConfirm);
        BottomLine.ChageMetaUrl(BottomLine.PageUrl.BottomLine);
        BottomLine.AdjustShareUrl(BottomLine.PageUrl.BottomLine);
        BottomLine.UpdateBottomLineMenu("ancBottomLineRegister");
    },
    InitializePurchaseDatePicker: function () {
        var purchaseDateTime = $("#input_DateOfPurchase").val();
        purchaseDateTime = purchaseDateTime == "" ? "" : new Date(purchaseDateTime);
        purchaseDate = new IphoneDateTimePicker($("#PurchaseDatePickerSection"), purchaseDateTime);
    },
    InitializeClosingDatePicker: function () {
        var closingDateTime = $("#input_ClosingDate").val();
        closingDateTime = closingDateTime == "" ? "" : new Date(closingDateTime);
        closingDate = new IphoneDateTimePicker($("#ClosingDatePickerSection"), closingDateTime);
    },
    InitializeRegistrationEvent: function () {
        if (!$(".left-part-reg").is(':visible')) {
            adjustPlaceholder();
        }

        BottomLine.InitializePurchaseDatePicker();
        BottomLine.InitializeClosingDatePicker();

        $("#transactionType").on('click', function () {
            $(".TransactionTypeFloatingDiv").show();
        });

        $("#saveDateTime").click(function () {
            var month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
            var selectedDateString = purchaseDate.GetSelectedDateTime();
            var selectedDate = new Date(selectedDateString);
            $("#input_DateOfPurchase").val(month[selectedDate.getMonth()] + " " + selectedDate.getDate() + ", " + selectedDate.getFullYear());
            $("#dvPurchaseDatePicker").removeClass("open-datePicker");
            validationClear($("#input_DateOfPurchase"));
        });

        $("#input_DateOfPurchase").on('focus', function () {
            $("#dvPurchaseDatePicker").addClass("open-datePicker");
        });

        $("#saveClosingDateTime").click(function () {
            var month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
            var selectedDateString = closingDate.GetSelectedDateTime();
            var selectedDate = new Date(selectedDateString);
            $("#input_ClosingDate").val(month[selectedDate.getMonth()] + " " + selectedDate.getDate() + ", " + selectedDate.getFullYear());
            $("#dvClosingDatePicker").removeClass("open-datePicker");
            validationClear($("#input_ClosingDate"));
        });

        $("#input_ClosingDate").on('focus', function () {
            $("#dvClosingDatePicker").addClass("open-datePicker");
        });
        $("#input_TransactionType").change(function () {
            if ($("#input_TransactionType").val() == "Resale / Rental") {
                $("#DevelopmentFieldBox").hide();
                $("#DeveloperFieldBox").hide();
                $("#AddressFieldBox").show();
                $("#lblUnitNumber").text("  Unit Number");
                BottomLine.TransactionType = 1;
            }
            else {
                $("#DevelopmentFieldBox").show();
                $("#DeveloperFieldBox").show();
                $("#AddressFieldBox").hide();
                $("#lblUnitNumber").text("* Unit Number");
                BottomLine.TransactionType = 0;
            }
        });
        $(".selectionBox").on('click', function (event) {

            $(".selectionBox > .optionBox").removeClass("selected");
            $(this).find("div.optionBox").addClass("selected");
            BottomLine.TransactionType = parseInt($(this).attr("data-options"));

            if ($(this).attr('id') == 'selectionFirst') {
                $("#input_TransactionType").val("New Home");
                $("#input_TransactionType").next().css({ "visibility": "hidden" });
                $("#input_TransactionType").parent().parent().removeClass("TextBoxValidationError");
                $("#DevelopmentFieldBox").show();
                $("#DeveloperFieldBox").show();
                $("#AddressFieldBox").hide();
                $("#lblUnitNumber").text("* Unit Number");
                $("#input_UnitNumber").attr("placeholder", "* Unit Number");
                $("#lblPurchaseDate").text("* Date of Purchase");
                $("#input_DateOfPurchase").attr("placeholder", "* Date of Purchase");
                $("#lblUnitNumber").blur();

            } else if ($(this).attr('id') == 'selectionSecond') {
                $("#input_TransactionType").val("Resale / Rental");
                $("#input_TransactionType").next().css({ "visibility": "hidden" });
                $("#input_TransactionType").parent().parent().removeClass("TextBoxValidationError");
                $("#DevelopmentFieldBox").hide();
                $("#DeveloperFieldBox").hide();
                $("#AddressFieldBox").show();
                $("#lblUnitNumber").text("Unit Number");
                $("#input_UnitNumber").attr("placeholder", "Unit Number");
                $("#lblPurchaseDate").text("* Date of Purchase/Rental");
                $("#input_DateOfPurchase").attr("placeholder", "* Date of Purchase/Rental");
                validationClear($("#input_UnitNumber"));

            }

            $("#lastSection").show();
            $("#TransactionTypeDiv").removeClass("singleTextBox").addClass("firstTextBox");
            $("#AgentNameDiv").css({ "visibility": "visible" });

            $(".mobileVersionElements").css({ "position": "initial", "margin-top": "10px" });

            $(".TransactionTypeFloatingDiv").hide();

            event.stopPropagation();

        });

        $('#registrationSave').on('click', function () {
            isValidationSucceeded();
        });

        $(".requiredField:not([readonly])").on("blur", function () {
            validationEffect($(this));
        });

        $(".requiredField").on("focus", function () {
            validationClear($(this));
        });

        $("#input_AgentName").on("focus", function () {
            validationClear($(this));
        });


        if (document.getElementById('input_Address') != null) {
            var inputDev = document.getElementById('input_Address');
        }

        $("#input_InfoRequest").change(function () {
            var infoRequest = $(this).val();

            if (infoRequest == "Other / Not Sure") {
                $("#input_AgentName").attr("data-value", "").attr("placeholder", "Enter Agent Name");
                $("#BrokerNameSelected > .agentName").html("");
                $("#BrokerNameSelected > .brokerageName").html("");

                $("#input_Development").val("");
                $("#input_Development").attr("data-value", "");

                $("#input_Developer").val("");
                $("#input_Developer").attr("data-value", "");

                $("#input_UnitNumber").val("");

                $("#input_DateOfPurchase").val("");
                BottomLine.InitializePurchaseDatePicker();

                $("#input_ClosingDate").val("");
                BottomLine.InitializeClosingDatePicker();

                BottomLine.AdjustRegistrationForm();
            }
            else {
                $.ajax({
                    type: "GET",
                    url: "BottomLineInfoByProspectID",
                    data: { infoRequest: infoRequest },
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    cache: false,
                    beforeSend: function () { },
                    complete: function () { },
                    success: function (data) {
                        $("#input_AgentName").val('');
                        $("#BrokerNameSelected").show();
                        $("#input_AgentName").attr("data-value", data.Result.BrokerID);
                        $("#BrokerNameSelected > .agentName").html(data.Result.BrokerName);
                        $("#BrokerNameSelected > .brokerageName").html(data.Result.BrokerageName);

                        $("#input_Development").val(data.Result.ProjectName);
                        $("#input_Development").attr("data-value", data.Result.ProjectID);

                        $("#input_Developer").val(data.Result.DeveloperNames);
                        $("#input_Developer").attr("data-value", data.Result.DeveloperIDs);

                        $("#input_AgentName").attr("placeholder", "");

                        $("#input_Development").attr("readonly", "readonly");

                        $("#input_UnitNumber").val(data.Result.UnitNumber);

                        $("#input_DateOfPurchase").val(data.Result.DateOfPurchaseString);
                        BottomLine.InitializePurchaseDatePicker();

                        $("#input_ClosingDate").val(data.Result.ProjectedClosingDate);
                        BottomLine.InitializeClosingDatePicker();

                        if (data.Result.BrokerID > 0) validationClear($("#input_AgentName"));
                        validationClear($("#input_Development"));
                        validationClear($("#input_Developer"));

                        BottomLine.AdjustRegistrationForm();
                    }
                });
            }
        });
    },
    OpenVideo: function () {
        $(".youTubeVideo").click(function () {
            var videoURL = $(this).attr("data");

            $("a#inline").fancybox({
                'hideOnContentClick': true,
                openSpeed: 100,
                closeSpeed: 100,
                afterClose: function () {
                    setTimeout(function () {
                        $("#iframePopUPVideo").removeAttr("src").html("");
                    }, 600);
                },

                beforeShow: function () {
                    $("#iframePopUPVideo").attr("src", videoURL + "?autoplay=1&rel=0&showinfo=0&enablejsapi=1&wmode=opaque");
                    $(".fancybox-skin").css("padding", "0px");
                }
            });
            $("a#inline").click();
        });
    },
    GetAnchorByUrl: function (url) {
        if (url == "/bottomline-coupon")
            return "ancBottomLineCoupon";
        if (url == "/bottomline-register")
            return "ancBottomLineRegister";
        if (url == "/bottomline-vendors")
            return "ancBottomLineVendor";
        if (url == "/bottomline-registration-confirm")
            return "ancBottomLineRegistrationConfirm";

        return "ancBottomLineInfo";
    },
    BackPage: function () {
        window.addEventListener('popstate', function (event) {
            BottomLine.FromBackPage = true;
            var anchorName = BottomLine.GetAnchorByUrl(location.pathname.toLocaleLowerCase());
            $("#" + anchorName).trigger("click");
        });
    }
}

var AddBottomLineRecord = function (sharedvia) {

    var url = "/AddRecordBottomLineShared";
    $.ajax({
        type: "POST",
        url: url,
        data: "{'sharedvia': '" + sharedvia + "'}",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        beforeSend: function () { $("#ajax_spinner").show(); },
        complete: function () { $("#ajax_spinner").hide(); },
        success: function (data) {
            if (data.d != "") {

            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert(textStatus);
        }
    });
}
var AddressGenerationHelper = {
    _country_ga: "",
    _City: "",
    _State: "",
    _Country: "",
    _Zip: "",
    _Street: "",
    SetAddressPartsForProject: function (place, addressType, predicted_address) {
        var objCountry = AddressGenerationHelper.GetObjectByType(place.address_components, 'country');
        var objState = AddressGenerationHelper.GetObjectByType(place.address_components, "administrative_area_level_1");
        var objZip = AddressGenerationHelper.GetObjectByType(place.address_components, "postal_code");
        var objCity = AddressGenerationHelper.GetObjectByType(place.address_components, "locality");
        var objStreet = AddressGenerationHelper.GetObjectByType(place.address_components, "street_number");
        var objRoute = AddressGenerationHelper.GetObjectByType(place.address_components, "route");

        AddressGenerationHelper._City = objCity ? objCity.short_name : "";
        AddressGenerationHelper._Zip = objZip ? objZip.short_name : "";
        AddressGenerationHelper._State = objState ? objState.short_name : "";
        AddressGenerationHelper._Country = objCountry ? objCountry.short_name : "";
        var addressRouteValue = objRoute ? objRoute.short_name : "";
        var addressStreetValue = objStreet ? objStreet.short_name : "";

        if (addressRouteValue == "" && addressStreetValue == "")
            AddressGenerationHelper._Street = "";
        else if (addressRouteValue == "")
            AddressGenerationHelper._Street = addressStreetValue;
        else if (addressStreetValue == "")
            AddressGenerationHelper._Street = addressRouteValue;
        else
            AddressGenerationHelper._Street = addressStreetValue + " " + addressRouteValue;

        $("#City").val(AddressGenerationHelper._City);
        $("#Zip").val(AddressGenerationHelper._Zip);
        $("#State").val(AddressGenerationHelper._State);
        $("#Country").val(AddressGenerationHelper._Country);
        $("#Street").val(AddressGenerationHelper._Street);
    },
    GetObjectByType: function (objects, type) {
        var objectArray = $(objects).toArray();
        for (var count = 0; count < objectArray.length; count++) {
            var objType = objectArray[count].types[0];
            if (objType == type)
                return objectArray[count];
        }
        return null;
    },
    SetAddressAutoCompleteForControl: function (input, addressType) {
        $(input).focus(function () {
            if ($(this).val() == "Enter a location") {
                $(this).val('');
            }
        });
        var lat = 43.767421;
        var long = -79.475509;
        var defaultBounds = new google.maps.LatLngBounds(new google.maps.LatLng(lat, long));
        var options = {
            bounds: defaultBounds,
            types: ['geocode', 'establishment']
        };
        if (this._country_ga != '') {
            options.componentRestrictions = {
                country: this._country_ga.toLowerCase()
            };
        }
        var autocomplete = new google.maps.places.Autocomplete(input, options);
        address_type = addressType;
        google.maps.event.addListener(autocomplete, 'place_changed', function () {
            var place = autocomplete.getPlace();
            if (place.address_components.length < 2) {
                var service = new google.maps.places.AutocompleteService();
                service.getQueryPredictions({
                    input: place.name
                }, function (predictions, status) {
                    var addr1 = predictions[0].terms[0].value;
                    var city = predictions[0].terms[1].value;
                    var country = predictions[0].terms[predictions[0].terms.length - 1].value;
                    var state = predictions[0].terms.length > 3 ? predictions[0].terms[2].value : '';
                    pre_address = {
                        address1: addr1,
                        city: city,
                        state: state,
                        country: country
                    };
                    AddressGenerationHelper.SetAddressPartsForProject(null, address_type, pre_address);
                    $("#" + input.id.substr(0, input.id.length - 1) + "2").focus();
                });
            } else {

                AddressGenerationHelper.SetAddressPartsForProject(place, addressType, null);
            }
        });
    }
}


var HomeScreen = {
    showVideoFullScreen: function () {
        $("#divHomeVideo").show();
        HomeScreen.playVideo();
        $(divvideoPlayPause).hide();
        $(divvideoPlayPause).attr('playtrack', '1');
        CondonowVideoStats();
        MakeChangeUrl(true, false, false, true);
    },
    playVideo: function () {
        try {
            var mediaPlayer = document.getElementById(condoplayer);
            mediaPlayer.currentTime = 0;
            mediaPlayer.load();
            mediaPlayer.play();
        }
        catch (err) {
        }

    },
    onLearnMoreClick: function () {
        new parent.ProjectStats().recordProjectStats(parent.ProjectID, undefined, parent.ProjectStatsUtil.GetPageUrl(), "Learn more", 0, undefined, undefined);
    },
    pauseVideo: function () {
        var mediaPlayer = document.getElementById(condoplayer);
        mediaPlayer.pause();
    },
    hideAndStopVideo: function () {
        new parent.ProjectStats().recordProjectStats(parent.ProjectID, undefined, parent.window.location.href, "Close video", 0, undefined, undefined);
        try {
            HomeScreen.pauseVideo();
        }
        catch (err) {
        }
        $("#divHomeVideo").hide();
        $(divvideoPlayPause).attr('playtrack', '0');
        MakeChangeUrl();

    },
    onVideoClick: function () {
        try {
            HomeScreen.pauseVideo();
        }
        catch (err) {
        }
        $(divvideoPlayPause).show();
        $(divvideoPlayPause).attr('playtrack', '0');
    },
    onVideoArrowClick: function () {
        if ($(divvideoPlayPause).attr('playtrack') == '0') {
            $(divvideoPlayPause).hide();
            $(divvideoPlayPause).attr('playtrack', '1');
            var mediaPlayer = document.getElementById(condoplayer);
            mediaPlayer.play();
        }
    }
}

function ShowLoader() {
  
  $("body").append($("<div class='customSpinner'><span class='customLoading'></span></div>"));
}

function HideLoader() {
    $("div.customSpinner").remove();
}
var MessageList = {
    'firstname': "Please add only the primary purchaser's FIRST name.",
    'lastname': "Please add only the primary purchaser's LAST name.",
    'middlename': "No initials shall be accepted, full middle names only.",
    'datepicker': "Must be at least 18 years old.",
    'occupation': "Enter your primary occupation.",
    'email': "Enter your primary email address, note: email will be the primary method of communicating important dates and updates, please make sure you add CondoNow.com to your white list.",
    'dipi': "Enter the country/province where the ID originated.",
    'din': "Enter the ID number of the chosen document.",
    'sin': "Enter the SIN # if you are Canadian resident.",
    'oncaDL': "Name, Date of Birth & Driver License doesn't match.",
    //loginEmailExists: 'This email is not registered. Please correct the email address or join now.'
    'loginEmailExists': 'Email is not registered. Click Join Now.',
    'staffEmailRegistered': 'Email Already Exists.'
};

var Register = {
    ValidationEmpty: function (ctrl) {
       

        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        if (value == "") {
            var message = "Required";
            $(ctrl).next("p").css("display", "inline");
            $(ctrl).next("p").css("background-color", "transparent");
            var className = $(ctrl).attr("class");
            if (className) {
                var message1 = MessageList[$(ctrl).attr("class").split(" ")[0]];
                if (String(message1) != "undefined") {
                    message = message1;
                }
            }
            $(ctrl).next("p").text(message);            
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            $(ctrl).next("p").css("display", "none");
            $(ctrl).next("p").css("background-color", "");
            $(ctrl).parent().parent().css("background-color", "");
            $(ctrl).css("background-color", "");
            $(ctrl).next("p").text("");
            return true;
        }
    },

    ValidationEmptyPhone: function (ctrl) {
        var value = $.trim($(ctrl).val());       
        if (value == "") {
            var message = "Required";
            $(ctrl).parent().next("p").css("display", "inline");
            $(ctrl).parent().next("p").css("background-color", "transparent");
            var className = $(ctrl).attr("class");
            if (className) {
                var message1 = MessageList[$(ctrl).attr("class").split(" ")[0]];
                if (String(message1) != "undefined") {
                    message = message1;
                }
            }
            $(ctrl).parent().next("p").text(message);
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).parent().parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            $(ctrl).parent().next("p").css("display", "none");
            $(ctrl).parent().next("p").css("background-color", "");
            $(ctrl).parent().parent().parent().css("background-color", "");
            $(ctrl).parent().parent().css("background-color", "");
            $(ctrl).css("background-color", "");
            $(ctrl).parent().next("p").text("");
            return true;
        }
    },
    //US23262

    ValidationFirstAndLastNameEmpty: function (ctrl) {


        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        var name = /s/;
        if (value.indexOf(' ') <= 0) {
            var message = "Please enter full name";
            $(ctrl).next("p").css("display", "inline");
            $(ctrl).next("p").css("background-color", "transparent");
            var className = $(ctrl).attr("class");
            if (className) {
                var message1 = MessageList[$(ctrl).attr("class").split(" ")[0]];
                if (String(message1) != "undefined") {
                    message = message1;
                }
            }
            $(ctrl).next("p").text(message);
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
       
        else {
            $(ctrl).next("p").css("display", "none");
            $(ctrl).next("p").css("background-color", "");
            $(ctrl).parent().parent().css("background-color", "");
            $(ctrl).css("background-color", "");
            $(ctrl).next("p").text("");
            return true;
        }
    },
    ValidationMaximunLength: function (ctrl) {

        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        var names = value.split(" ");
        if ((names.length > 0 && names[0].length > 30) || (names.length > 1 && names[1].length > 30) || (names.length > 2 && names[2].length > 30) ) {
            var message = "Max 30 characters allowed for each name";
            $(ctrl).next("p").css("display", "inline");
            $(ctrl).next("p").css("background-color", "transparent");
            var className = $(ctrl).attr("class");
            if (className) {
                var message1 = MessageList[$(ctrl).attr("class").split(" ")[0]];
                if (String(message1) != "undefined") {
                    message = message1;
                }
            }
            $(ctrl).next("p").text(message);
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            $(ctrl).next("p").css("display", "none");
            $(ctrl).next("p").css("background-color", "");
            $(ctrl).parent().parent().css("background-color", "");
            $(ctrl).css("background-color", "");
            $(ctrl).next("p").text("");
            return true;
        }
    },

    ValidationFullName: function (ctrl) {
		let value = $.trim($(ctrl).val().replace(/\s+/g, ' ').replace(/‘/g, "'").replace(/’/g, "'"));

        $(ctrl).val(value);       
		const CASE_A = /^[a-zA-Z,.'-]{1,30}(?:\s[a-zA-ZA-Z,.'-]{0,30})?\s[a-zA-Z,.'-]{1,30}$/;
		const CASE_B = /^[a-zA-Z,.'-]{1,30}(?:\s[a-zA-ZA-Z,.'-]{0,30})(?:\s[a-zA-ZA-Z,.'-]{0,30})?\s[a-zA-Z,.'-]{1,30}$/;
		const CASE_C = /^[a-zA-Z,.'-]{1,30}(?:\s[a-zA-ZA-Z,.'-]{0,30})(?:\s[a-zA-ZA-Z,.'-]{0,30})(?:\s[a-zA-ZA-Z,.'-]{0,30})?\s[a-zA-Z,.'-]{1,30}$/;

		if (!CASE_A.test(value) && !CASE_B.test(value) && !CASE_C.test(value)) {
            var message = "special characters and numbers are not allowed";
            $(ctrl).next("p").css("display", "inline");
            $(ctrl).next("p").css("background-color", "transparent");
            var className = $(ctrl).attr("class");
            if (className) {
                var message1 = MessageList[$(ctrl).attr("class").split(" ")[0]];
                if (String(message1) != "undefined") {
                    message = message1;
                }
            }
            $(ctrl).next("p").text(message);
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            $(ctrl).next("p").css("display", "none");
            $(ctrl).next("p").css("background-color", "");
            $(ctrl).parent().parent().css("background-color", "");
            $(ctrl).css("background-color", "");
            $(ctrl).next("p").text("");
            return true;
        }
    },
   

    ValidationEmptyIfVipSales: function (ctrl) {


        if ($(ctrl).val().trim() == "" && (CurrentSellingStatus == "Public Sales" || CurrentSellingStatus == "Public Sales & Assignments" || CurrentSellingStatus == "Sold Out" || CurrentSellingStatus == "Sold Out & Assignments" || CurrentSellingStatus == "VIP Sales")) {
            var message = "Required";
            $(ctrl).next("p").css("display", "inline");
            $(ctrl).next("p").css("background-color", "transparent");
            var className = $(ctrl).attr("class");
            if (className) {
                var message1 = MessageList[$(ctrl).attr("class").split(" ")[0]];
                if (String(message1) != "undefined") {
                    message = message1;
                }
            }
            $(ctrl).next("p").text(message);
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            $(ctrl).next("p").css("display", "none");
            $(ctrl).next("p").css("background-color", "");
            $(ctrl).parent().parent().css("background-color", "");
            $(ctrl).css("background-color", "");
            $(ctrl).next("p").text("");
            return true;
        }
    },
    ValidationEmptyForClosestIntersection: function (ctrl) {


        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        if (value == "") {
            var message = "Required";
            $(ctrl).next().next("p").css("display", "inline");
            $(ctrl).next().next("p").css("background-color", "transparent");
            var className = $(ctrl).attr("class");
            if (className) {
                var message1 = MessageList[$(ctrl).attr("class").split(" ")[0]];
                if (String(message1) != "undefined") {
                    message = message1;
                }
            }
            $(ctrl).next().next("p").text(message);
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            $(ctrl).next().next("p").css("display", "none");
            $(ctrl).next().next("p").css("background-color", "");
            $(ctrl).next().parent().parent().css("background-color", "");
            $(ctrl).css("background-color", "");
            $(ctrl).next().next("p").text("");
            return true;
        }
    },
    MakeErrorField: function (ctrl, message){
        $(ctrl).next("p").css("display", "inline");
        $(ctrl).next("p").css("background-color", "transparent");
        $(ctrl).next("p").text(message);
        $(ctrl).parent().parent().css("background-color", "#ffcdc2");
        $(ctrl).css("background-color", "#ffcdc2");
        return false;
    },
    ValidationEmptyForText: function (ctrl) {
        var text = $.trim($(ctrl).text());
        if (text == "") {
            var message = "Required";
            $(ctrl).next("p").css("display", "inline");
            $(ctrl).next("p").css("background-color", "transparent");
            var className = $(ctrl).attr("class");
            if (className) {
                var message1 = MessageList[$(ctrl).attr("class").split(" ")[0]];
                if (String(message1) != "undefined") {
                    message = message1;
                }
            }
            $(ctrl).next("p").text(message);
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            $(ctrl).next("p").css("display", "none");
            $(ctrl).next("p").css("background-color", "");
            $(ctrl).parent().parent().css("background-color", "");
            $(ctrl).css("background-color", "");
            $(ctrl).next("p").text("");
            return true;
        }
    },
    ValidationEmptyforDate: function (ctrl) {
        if (($(ctrl).val() == null) || ($(ctrl).val() == "" && !$(ctrl)[0].disabled)) {
            var message = "Required";
            $(ctrl).next("p").css("display", "inline");
            $(ctrl).next("p").css("background-color", "transparent");
            var className = $(ctrl).attr("class");
            if (className) {
                var message = MessageList[$(ctrl).attr("class").split(" ")[0]];
            }
            if (message == undefined) {
                message = "Required";
            }
            $(ctrl).next("p").text(message);
            //$(ctrl).hide();
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $($(ctrl).parent().find('.triangledbg')).css("background-color", "#ffcdc2");
            //$(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            $(ctrl).css("background-color", "");
            $(ctrl).next("p").css("background-color", "");
            $(ctrl).parent().parent().css("background-color", "");
            $($(ctrl).parent().find('.triangledbg')).css("background-color", "");

            $(ctrl).next("p").css("display", "none");
            $(ctrl).next("p").text("");
            $(ctrl).show();
            return true;
        }
    },
    ClearValidationForOpportunity: function (ctrl) {
        var paragraphDom = $(ctrl).parent().parent().parent().find("p");
        paragraphDom.css("display", "none");
        paragraphDom.css("background-color", "");
        $(ctrl).parent().parent().parent().parent().css("background-color", "");
        $(ctrl).css("background-color", "");
        paragraphDom.text("");
        return true;
    },
    ValidationEmptyForOpportunity: function (ctrl) {
        var value = $.trim($(ctrl).val());
        var valueArray = $("[name$='LeadWhere']");
        var paragraphDom = $(ctrl).parent().parent().parent().find("p");
        $(ctrl).val(value);
        if (value == "" && valueArray.val() == "[]") {
            var message = "Required";
            paragraphDom.css("display", "inline");
            paragraphDom.css("background-color", "transparent");
            var className = $(ctrl).attr("class");
            if (className) {
                var message1 = MessageList[$(ctrl).attr("class").split(" ")[0]];
                if (String(message1) != "undefined") {
                    message = message1;
                }
            }
            paragraphDom.text(message);
            $(ctrl).parent().parent().parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            paragraphDom.css("display", "none");
            paragraphDom.css("background-color", "");
            $(ctrl).parent().parent().parent().parent().css("background-color", "");
            $(ctrl).css("background-color", "");
            paragraphDom.text("");
            return true;
        }
    },
    ValidationEmptyForSellingPrice: function (ctrl) {
        var value = $.trim($(ctrl).val().replace("$", ""));
        var paragraphDom = $(ctrl).parent().find("p");
        if (value == 0 || value == 0.00) {
            var message = "Required";
            paragraphDom.css("display", "inline");
            paragraphDom.css("background-color", "transparent");
            var className = $(ctrl).attr("class");
            if (className) {
                var message1 = MessageList[$(ctrl).attr("class").split(" ")[0]];
                if (String(message1) != "undefined") {
                    message = message1;
                }
            }
            paragraphDom.text(message);
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            paragraphDom.css("display", "none");
            paragraphDom.css("background-color", "");
            $(ctrl).parent().parent().css("background-color", "");
            $(ctrl).css("background-color", "");
            paragraphDom.text("");
            return true;
        }
    },
    ValidationEmptyNoTrim: function (ctrl) {
        var value = $.trim($(ctrl).val());
        if (value == "") {
            var message = "Required";
            $(ctrl).next("p").css("display", "inline");
            $(ctrl).next("p").css("background-color", "transparent");
            var className = $(ctrl).attr("class");
            if (className) {
                var message1 = MessageList[$(ctrl).attr("class").split(" ")[0]];
                if (String(message1) != "undefined") {
                    message = message1;
                }
            }
            $(ctrl).next("p").text(message);
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            $(ctrl).next("p").css("display", "none");
            $(ctrl).next("p").css("background-color", "");
            $(ctrl).parent().parent().css("background-color", "");
            $(ctrl).css("background-color", "");
            $(ctrl).next("p").text("");
            return true;
        }
    },
    ValidationHTMLTag: function (ctrl) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        if ($(ctrl).val() != "") {
            var regexp = /<|>/;
            if (Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) {
                var message = "Invalid Input";
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                var className = $(ctrl).attr("class");
                $(ctrl).next("p").text(message);
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").css("background-color", "");
                $(ctrl).parent().parent().css("background-color", "");
                $(ctrl).css("background-color", "");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },
    ValidationforParkingSelect: function (ctrl) {
        if (($(ctrl).val() == null) || ($(ctrl).val() == "" && !$(ctrl)[0].disabled && $(ctrl).text().toLowerCase() != "parking not available")) {
            var message = "Required";
            $(ctrl).next("p").css("display", "inline");
            $(ctrl).next("p").css("background-color", "transparent");
            var className = $(ctrl).attr("class");
            if (className) {
                var message1 = MessageList[$(ctrl).attr("class").split(" ")[0]];
                if (String(message1) != "undefined") {
                    message = message1;
                }
            }
            $(ctrl).next("p").text(message);
            $(ctrl).hide();
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            $(ctrl).next("p").css("display", "none");
            $(ctrl).next("p").text("");
            $(ctrl).show();
            return true;
        }
    },
    ClearValidationForSelect: function (ctrl) {
        $(ctrl).css("background-color", "");
        $(ctrl).next("p").css("background-color", "");
        $(ctrl).parent().parent().css("background-color", "");
        $($(ctrl).parent().find('.triangledbg')).css("background-color", "");

        $(ctrl).next("p").css("display", "none");
        $(ctrl).next("p").text("");
        $(ctrl).show();
        return true;
    },
    ValidationEmptyforSelect: function (ctrl) {
        if (($(ctrl).val() == null) || ($(ctrl).val() == "" && !$(ctrl)[0].disabled)) {
            var message = "Required";
            $(ctrl).next("p").css("display", "inline");
            $(ctrl).next("p").css("background-color", "transparent");
            var className = $(ctrl).attr("class");
            if (className) {
                var message = MessageList[$(ctrl).attr("class").split(" ")[0]];
            }
            if (message == undefined) {
                message = "Required";
            }
            $(ctrl).next("p").text(message);
            //$(ctrl).hide();
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $($(ctrl).parent().find('.triangledbg')).css("background-color", "#ffcdc2");
            //$(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            return Register.ClearValidationForSelect(ctrl);
        }
    },
    ValidationEmptyForPurchaserOccupation: function (ctrl) {
       

        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        if (value == "") {
            var message = "Required";
            $(ctrl).next().next("p").css("display", "inline");
            $(ctrl).next().next("p").css("background-color", "transparent");
            var className = $(ctrl).attr("class");
            if (className) {
                var message1 = MessageList[$(ctrl).attr("class").split(" ")[0]];
                if (String(message1) != "undefined") {
                    message = message1;
                }
            }
            $(ctrl).next().next("p").text(message);
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            $(ctrl).next().next("p").css("display", "none");
            $(ctrl).next().next("p").css("background-color", "");
            $(ctrl).parent().parent().css("background-color", "");
            $(ctrl).css("background-color", "");
            $(ctrl).next().next("p").text("");
            return true;
        }
    },
    ValidationEmptyforDynamicSelect: function (ctrl) {
        if (($(ctrl).val() == null) || (($(ctrl).val() == "-1" || $(ctrl).val() == "") && !$(ctrl)[0].disabled)) {
            var message = "Required";
            $(ctrl).next("p").css("display", "inline");
            $(ctrl).next("p").css("background-color", "transparent");

            var className = $(ctrl).attr("class");
            if (className) {
                var message = MessageList[$(ctrl).attr("class").split(" ")[0]];
            }
            if (message == undefined) {
                message = "Required";
            }
            $(ctrl).next("p").text(message);
            //$(ctrl).hide();
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            $($(ctrl).parent().find('.trianglebg')).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            $(ctrl).next("p").css("display", "none");
            $(ctrl).next("p").css("background-color", "");
            $(ctrl).css("background-color", "");
            $($(ctrl).parent().find('.trianglebg')).css("background-color", "");
            $(ctrl).next("p").text("");
            $(ctrl).show();
            return true;
        }
    },
    ValidationEmptyforDynamicStarSelect: function (ctrl) {
        if (($(ctrl).val() == null) || (($(ctrl).val() == "-1" || $(ctrl).val() == "") && !$(ctrl)[0].disabled)) {
            var message = "Required";
            var ptag = $($(ctrl).parent().parent()).find('p');
            $(ptag).css("display", "inline");
            $(ptag).css("background-color", "transparent");

            //            if (isMobile.anyMobile() || parent.window.innerWidth < 768) {
            //                $(ptag).css("top", "44px");
            //            }
            var className = $(ctrl).attr("class");
            if (className) {
                var message = MessageList[$(ctrl).attr("class").split(" ")[0]];
            }
            if (message == undefined) {
                message = "Required";
            }
            $(ptag).text(message);
            //$(ctrl).hide();
            $(ctrl).parent().parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            $($(ctrl).parent().parent().find('.trianglebg')).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            var ptag = $($(ctrl).parent().parent()).find('p');
            $(ptag).css("display", "none");
            $($(ctrl).parent().parent().find('.trianglebg')).css("background-color", "");
            $(ptag).text("");
            $(ctrl).show();
            return true;
        }
    },
    ValidationEmpty_ddSlick: function (associated_ctrl, id) {
        var $ctrl_val = $('#' + id + ' .dd-select .dd-selected-value');
        var $ctrl = $('#' + id);
        if ($ctrl_val.val() == null || ($ctrl_val.val() == "" && !$ctrl[0].disabled)) {
            var message = "Required";
            $ctrl.next("p").css("display", "inline");
            $ctrl.next("p").css("background-color", "transparent");
            var className = $ctrl.attr("class");
            if (className) {
                var message = MessageList[$ctrl.attr("class").split(" ")[0]];
            }
            if (message == undefined) {
                message = "Required";
            }
            $ctrl.next("p").text(message);
            $ctrl.hide();
            $ctrl.parent().parent().css("background-color", "#ffcdc2");
            $ctrl.css("background-color", "#ffcdc2");
            return false;
        }
        else {
            $ctrl.next("p").css("display", "none");
            $ctrl.next("p").text("");
            $ctrl.show();
            return true;
        }
    },
    ValidationNumber: function (ctrl) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        if ($(ctrl).val() != "") {
            if ($(ctrl).val().toUpperCase() == 'N/A' || $(ctrl).val().toUpperCase() == 'NA') {
                if ($("#CommisionInfo_Commision")) {
                    $("#CommisionInfo_Commision").val('N/A');
                    return true;
                }
            }
            else if (isNaN($(ctrl).val())) {
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                if ($("#CommisionInfo_Commision")) {
                    $(ctrl).next("p").text("Number required, put N/A if not applicable");
                }
                else {
                    $(ctrl).next("p").text("Number required");
                }
            return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },
    ValidationInteger: function (ctrl) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        if ($(ctrl).val() != "") {
            var regex = /^\s*(\+|-)?\d+\s*$/;
            if (!Utils.CheckInputAgainstExpression($(ctrl).val(), regex)) {
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").text("Integer Required");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },
    ValidationEmail: function (ctrl) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        if ($(ctrl).val() != "") {
            var regexp = /^[\+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
            if (!Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) {
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").text("Enter Correct Email");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },
    ValidationMaxLength: function (ctrl, length) {
        if ($(ctrl).val() != "") {
            if ($(ctrl).val().length > length) {
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").text("Maximum length " + length);
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },
    ValidationMinLength: function (ctrl, length) {
        if ($(ctrl).val() != "") {

            if ($(ctrl).val().length < length) {
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").text("Minimum length " + length);
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },
    ValidationCombinationCheck: function (ctrl, comctrl, message) {
        if ($("#" + comctrl).val() == "") {
            if ($(ctrl).val() == "") {
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").text("Required " + message);
                $("#" + comctrl).parents("tr").find("span").css("display", "inline");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                $("#" + comctrl).parents("tr").find("span").css("display", "none");
                $("#" + comctrl).next("p").css("display", "none");
                $("#" + comctrl).css("background-color", "#ffffff");
                $("#" + comctrl).parent().parent().css("background-color", "#ffffff");
                return true;
            }
        }

    },
    ValidationConditionalVisible: function (ctrl) {
        if ($("tr#tr_SIN").is(":visible")) {
            return;
        }
        $("tr#tr_SIN").show();
        $(ctrl).parents().closest("tr").removeClass("last");
        $("#tr_SIN").addClass("last");

        fancybox_helpers.autoHeightAdjust();
    },
    ValidationConditionalHide: function (ctrl) {
        if (!$("tr#tr_SIN").is(":visible")) {
            return;
        }
        $("tr#tr_SIN").hide();
        $("tr#tr_SIN").find("#txt_pur_sin").val("");
        $("tr#tr_SIN").find("#txt_pur_sin").next("p").css("display", "none");

        $("#tr_SIN").removeClass("last");
        $(ctrl).parents().closest("tr").addClass("last");

        fancybox_helpers.autoHeightAdjust();
    },
    ValidationCellNumber: function (ctrl) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        if ($(ctrl).val() != "") {
            var regexp = /^((011[ 0-9]*)|((1)|(\+1)?[- ]?([(]?[2-9]{1}\d{2}[)]?[- ]?\d{3}[- ]?\d{4})([ ]?(ext|Ext|EXT|x|X|Ex|ex)?[.]?[ ]?\d{1,6})?))$/;
            if (!Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) {
                $(ctrl).next("p").css("display", "inline");
                //$(ctrl).next("p").css("background-color", "transparent");
                if (ctrl.id == "txt_bro_worknumber") {
                    $(ctrl).next("p").text("Enter Correct Work Number");
                }
                else if (ctrl.id == "txt_pur_homenumber") {
                    $(ctrl).next("p").text("Enter Correct Home Number");
                }
                else if (ctrl.id == "txt_pur_worknumber") {
                    $(ctrl).next("p").text("Enter Correct Work Number");
                }
                else if (ctrl.id == "txt_emp_tellnumber") {
                    $(ctrl).next("p").text("Enter Correct Tel Number");
                }
                else if (ctrl.id == "txt_emp_fax") {
                    $(ctrl).next("p").text("Enter Correct Fax Number");
                }
                else {
                    $(ctrl).next("p").text("Enter Correct Cell Number");
                }
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).parent().parent().css("background-color", "");
                $(ctrl).css("background-color", "");
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },
    ValidatePasswordAll: function (ctrl) {
        if (this.ValidationEmpty(ctrl)) {
            if (this.ValidationPassword(ctrl)) {
                return true;
            }
            return false;
        }
        return false;
    },
    ValidateConfirmPasswordAll: function (ctrl, confctrl) {
        if (this.ValidationEmpty(ctrl) && this.ValidationEmpty(confctrl)) {
            if (this.ValidationConfirmPassword(ctrl, confctrl)) {
                return true;
            }
            return false;
        }
        return false;
    },
    ValidationPassword: function (ctrl) {
        if (String($(ctrl).val()) != 'undefined' && $(ctrl).val() != "") {
            var alphaExp = /([a-z].*[0-9])|([0-9].*[a-z])/i;
            if ($(ctrl).val().length < 8) {
                $(ctrl).next("p").css({ "background-color": "transparent", "line-height": '12px', "display": "inline" });
                $(ctrl).next("p").text("Must be at least 8 characters in length, and contain at least 1 number and 1 letter.");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else if (!($(ctrl).val().match(alphaExp))) {
                $(ctrl).next("p").css({ "background-color": "transparent", "line-height": '12px', "display": "inline" });
                $(ctrl).next("p").text("Must be at least 8 characters in length, and contain at least 1 number and 1 letter.");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },
    ValidationConfirmPassword: function (ctrl, confctrl) {
        if (String($(ctrl).val()) != 'undefined' && $(confctrl).val() != "") {
            if ($(ctrl).val() != "") {
                if ($(ctrl).val() != $(confctrl).val()) {
                    $(ctrl).next("p").css("display", "inline");
                    $(ctrl).next("p").css("background-color", "transparent");
                    $(ctrl).next("p").text("Password mismatch");
                    $(confctrl).next("p").css("display", "none");
                    $(confctrl).next("p").text("");
                    $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                    $(ctrl).css("background-color", "#ffcdc2");
                    return false;
                }
                else {
                    $(ctrl).next("p").css("display", "none");
                    $(ctrl).next("p").text("");
                    $(confctrl).next("p").css("display", "none");
                    $(confctrl).css("background-color", "#ffffff");
                    $(confctrl).parent().parent().css("background-color", "#ffffff");
                    return true;
                }
            }
        }
    },
    ValidationConfirmEmail: function (ctrl, confctrl) {
        if (String($(ctrl).val()) != 'undefined' && $(confctrl).val() != "") {
            if ($(ctrl).val() != "") {
                if ($(ctrl).val() != $(confctrl).val()) {
                    $(ctrl).next("p").css("display", "inline");
                    $(ctrl).next("p").css("background-color", "transparent");
                    $(ctrl).next("p").text("Email mismatch");
                    //$(confctrl).next("p").css("display", "none");
                    //$(confctrl).next("p").text("");
                    $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                    $(ctrl).css("background-color", "#ffcdc2");
                    return false;
                }
                else {
                    $(ctrl).next("p").css("display", "none");
                    $(ctrl).next("p").text("");
                    //$(confctrl).next("p").css("display", "none");
                    //$(confctrl).css("background-color", "#ffffff");
                    //$(confctrl).parent().parent().css("background-color", "#ffffff");
                    return true;
                }
            }
        }
    },
    ValidationAccept: function (ctrl) {
        if ($(ctrl).attr("src") == "/images/check_blank.png") {
            $(ctrl).closest("div.div_error_wrapper").find("p.p_error").css("display", "inline");
            $(ctrl).closest("div.div_error_wrapper").find("p.p_error").text("Required");
            return false;
        }
        else {
            $(ctrl).closest("div.div_error_wrapper").find("p.p_error").css("display", "none");
            $(ctrl).closest("div.div_error_wrapper").find("p.p_error").text("");
            return true;
        }
    },
    ValidationOnChange: function (ctrl) {
        $(ctrl).closest("div.div_error_wrapper").find("p.p_error").css("display", "none");
        $(ctrl).closest("div.div_error_wrapper").find("p.p_error").text("");
        return true;
    },
    ValidationOnlyforNumber: function (ctrl) {
        if ($(ctrl).val() != "") {
            if (!isNaN($(ctrl).val())) {
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").text("Enter your Name as registered with RECO");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },
    ValidationProspectNameforNumber: function (ctrl) {
        if ($(ctrl).val() != "") {
            if (!isNaN($(ctrl).val())) {
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").text("Enter valid Name.");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },
    ValidationLength: function (ctrl, limit) {
        if ($(ctrl).val() != "") {
            if ($(ctrl).val().length > limit) {
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").text("Length should not exceed " + limit + " characters.");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
        return false;
    },
    ValidationSINNumber: function (ctrl) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        if ($(ctrl).val() != "") {
            var regexp = /^\d{3}[ ]?\d{3}[ ]?\d{3}$/;
            var number = $(ctrl).val();
            if (!(Utils.CheckInputAgainstExpression(number, regexp) && ModulasCheck(number))) {
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").text("Enter Correct SIN");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },
    ValidationBirthDateRange: function (ctrl) {
        if ($(ctrl).val() != "") {
            var newDate = new Date($(ctrl).val());
            var year = newDate.getFullYear()
            var yearCurr = new Date().getFullYear();
            var birthdate18 = new Date(year + 18, newDate.getMonth(), newDate.getDate(), 0, 0, 0, 0);
            if (birthdate18.getTime() >= new Date().getTime()) {
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").text(MessageList["datepicker"]);
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },
    ValidationZipCode: function (ctrl, country) {
        if ($(ctrl).val() != "") {
            var zipCode = $(ctrl).val();    //To be derived from the zipcode dropdown
            var zipCodePattern = /^(?:[A-Z0-9]+([- ]?[A-Z0-9]+)*)?$/;    //  /^\d{5}$|^\d{5}-\d{4}$/;   //USA Pattern
            var countryCode = $(country).val();
            switch (countryCode.toUpperCase()) {
                case "US":
                    zipCodePattern = /^([0-9]{5})(?:[-\s]*([0-9]{4}))?$/;
                    break;
                case "CA":
                    zipCodePattern = /^([A-Z][0-9][A-Z])\s*([0-9][A-Z][0-9])$/;
                    zipCode = ReFormatCanadaPostCode(ctrl);
                    break;
                default:
                    zipCodePattern = /^(?:[A-Z0-9]+([- ]?[A-Z0-9]+)*)?$/;
            }
            var IsValid = zipCodePattern.test(zipCode);

            if (!IsValid) {
                $(ctrl).css("background-color", "#ffcdc2");
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").text("Postal/ZIP code format is not valid");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },
    ValidationDocumentIDType: function (ctrl, ctrlType) {
        var regexp = "";
        if ($(ctrl).val() != "") {
            if ($("#" + ctrlType).val() != "") {
                if ($("#" + ctrlType).val() == "P") {
                    regexp = /^[a-zA-Z0-9]{1,9}$/;
                    if (!Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) {
                        $(ctrl).next("p").css("display", "inline");
                        $(ctrl).next("p").css("background-color", "transparent");
                        $(ctrl).next("p").text("Enter Correct Passport Number");
                        $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                        $(ctrl).css("background-color", "#ffcdc2");
                        return false;
                    }
                    else {
                        $(ctrl).next("p").css("display", "none");
                        $(ctrl).next("p").text("");
                        return true;
                    }
                }
                else if ($("#" + ctrlType).val() == "DL") {
                    regexp = /^[a-zA-Z0-9 -]{1,20}$/;
                    if (!Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) {
                        $(ctrl).next("p").css("display", "inline");
                        $(ctrl).next("p").css("background-color", "transparent");
                        $(ctrl).next("p").text("Enter Correct Driver's License");
                        $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                        $(ctrl).css("background-color", "#ffcdc2");
                        return false;
                    }
                    else {
                        $(ctrl).next("p").css("display", "none");
                        $(ctrl).next("p").text("");
                        return true;
                    }
                }
                else if ($("#" + ctrlType).val() == "LI") {
                    if ($("#ddl_pur_docplaceofissue_country").val() == "CA") {
                        regexp = /^[a-zA-Z][a-zA-Z][0-9]{10}$/;
                        if (!Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) {
                            $(ctrl).next("p").css("display", "inline");
                            $(ctrl).next("p").css("background-color", "transparent");
                            $(ctrl).next("p").text("Enter Correct Landed Immigrant Status");
                            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                            $(ctrl).css("background-color", "#ffcdc2");
                            return false;
                        }
                        else {
                            $(ctrl).next("p").css("display", "none");
                            $(ctrl).next("p").text("");
                            return true;
                        }
                    }
                    else {
                        $(ctrl).next("p").css("display", "none");
                        $(ctrl).next("p").text("");
                        $(ctrl).parent().parent().css("background-color", "#ffffff");
                        $(ctrl).css("background-color", "#ffffff");
                        return true;
                    }
                }
                else if ($("#" + ctrlType).val() == "CC") {
                    if ($("#ddl_pur_docplaceofissue_country").val() == "CA") {
                        regexp = /^[a-zA-Z][0-9]{7}$/;
                        if (!Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) {
                            $(ctrl).next("p").css("display", "inline");
                            $(ctrl).next("p").css("background-color", "transparent");
                            $(ctrl).next("p").text("Enter Correct Citizenship Card");
                            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                            $(ctrl).css("background-color", "#ffcdc2");
                            return false;
                        }
                        else {
                            $(ctrl).next("p").css("display", "none");
                            $(ctrl).next("p").text("");
                            return true;
                        }
                    }
                    else {
                        $(ctrl).next("p").css("display", "none");
                        $(ctrl).next("p").text("");
                        $(ctrl).parent().parent().css("background-color", "#ffffff");
                        $(ctrl).css("background-color", "#ffffff");
                        return true;
                    }
                }
                else if ($("#" + ctrlType).val() == "BC") {
                    regexp = /^[-0-9]+$/;
                    if (!Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) {
                        $(ctrl).next("p").css("display", "inline");
                        $(ctrl).next("p").css("background-color", "transparent");
                        $(ctrl).next("p").text("Enter Correct Birth Certificate");
                        $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                        $(ctrl).css("background-color", "#ffcdc2");
                        return false;
                    }
                    else {
                        $(ctrl).next("p").css("display", "none");
                        $(ctrl).next("p").text("");
                        return true;
                    }
                }
                else if ($("#" + ctrlType).val() == "IC") {
                    regexp = /^[0-9]{12}$/;
                    if (!Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) {
                        $(ctrl).next("p").css("display", "inline");
                        $(ctrl).next("p").css("background-color", "transparent");
                        $(ctrl).next("p").text("Enter Correct Indian Status Card");
                        $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                        $(ctrl).css("background-color", "#ffcdc2");
                        return false;
                    }
                    else {
                        $(ctrl).next("p").css("display", "none");
                        $(ctrl).next("p").text("");
                        return true;
                    }
                }
            }
            else {
            }
        }
    },
    ValidationDocumentIDPlaceOfIssueCountry: function () {
        if ($("#ddl_pur_docplaceofissue_country").length == 0 || $("#ddl_pur_idtype").length == 0) {
            return true;
        }

        var ddlPOICountry = document.getElementById("ddl_pur_docplaceofissue_country");
        var ddlDocIDType = document.getElementById('ddl_pur_idtype');
        var isCountryRequired = ddlDocIDType.value.match(/(BC)|(CC)|(LI)|(P)|(DL)|(IC)/i);

        if (isCountryRequired && $(ddlPOICountry).val() == "") {
            $(ddlPOICountry).next("p").css("display", "inline")
            $(ddlPOICountry).next("p").css("background-color", "transparent");
            $(ddlPOICountry).next("p").text(MessageList["dipi"]);
            $(ddlPOICountry).hide();
            $(ddlPOICountry).parent().parent().css("background-color", "#ffcdc2");
            $(ddlPOICountry).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            $(ddlPOICountry).next("p").css("display", "none");
            $(ddlPOICountry).next("p").text("");
            $(ddlPOICountry).show();
            return true;
        }
    },
    ValidationDocumentIDPlaceOfIssueState: function () {
        if ($("#ddl_pur_docplaceofissue_country").length == 0 || $("#ddl_pur_idtype").length == 0) {
            return true;
        }

        var ddlPOIState = document.getElementById("ddl_pur_docplaceofissue_state");
        var isStateRequired = $("#ddl_pur_idtype").val().match(/DL/i);
        var stateRow = document.getElementById("docIDPOIStateRow");

        if (isStateRequired && $(ddlPOIState).val() == "") {
            $(ddlPOIState).next("p").css("display", "inline")
            $(ddlPOIState).next("p").css("background-color", "transparent");
            $(ddlPOIState).next("p").text("Required");
            $(ddlPOIState).hide();
            $(ddlPOIState).parent().parent().css("background-color", "#ffcdc2");
            $(ddlPOIState).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            $(ddlPOIState).next("p").css("display", "none");
            $(ddlPOIState).next("p").text("");
            $(ddlPOIState).show();
            return true;
        }
    },
    ValidationCountryDocumentIDType: function (ctrl, ctrlID, ctrlType) {
        if ($(ctrl).length == 0) {
            return true;
        }
        var regexp = "";
        if ($(ctrl).val() != "CA") {
            if ($("#" + ctrlType).val() != "") {
                if ($("#" + ctrlType).val() == "LI" || $("#" + ctrlType).val() == "CC") {
                    if ($("#" + ctrlID).val() != "") {
                        $("#" + ctrlID).next("p").css("display", "none");
                        $("#" + ctrlID).next("p").text("");
                        $("#" + ctrlID).parent().parent().css("background-color", "#ffffff");
                        $("#" + ctrlID).parent().parent().next("td.tdarrow").css("background-color", "#ffffff");
                        $("#" + ctrlID).css("background-color", "#ffffff");
                        return true;
                    }
                }
            }

        }
        else {
            if ($("#" + ctrlType).val() != "") {
                if ($("#" + ctrlType).val() == "LI") {
                    regexp = /^[a-zA-Z][a-zA-Z][0-9]{10}$/;
                    if (!Utils.CheckInputAgainstExpression($("#" + ctrlID).val(), regexp)) {
                        $("#" + ctrlID).next("p").css("display", "inline");
                        $("#" + ctrlID).next("p").css("background-color", "transparent");
                        $("#" + ctrlID).next("p").text("Enter Correct Landed Immigrant Status");
                        $("#" + ctrlID).parent().parent().css("background-color", "#ffcdc2");
                        $("#" + ctrlID).css("background-color", "#ffcdc2");
                        return false;
                    }
                    else {
                        $("#" + ctrlID).next("p").css("display", "none");
                        $("#" + ctrlID).next("p").text("");
                        return true;
                    }
                }
                if ($("#" + ctrlType).val() == "CC") {
                    regexp = /^[a-zA-Z][0-9]{7}$/;
                    if (!Utils.CheckInputAgainstExpression($("#" + ctrlID).val(), regexp)) {
                        $("#" + ctrlID).next("p").css("display", "inline");
                        $("#" + ctrlID).next("p").css("background-color", "transparent");
                        $("#" + ctrlID).next("p").text("Enter Correct Citizenship Card");
                        $("#" + ctrlID).parent().parent().css("background-color", "#ffcdc2");
                        $("#" + ctrlID).css("background-color", "#ffcdc2");
                        return false;
                    }
                    else {
                        $("#" + ctrlID).next("p").css("display", "none");
                        $("#" + ctrlID).next("p").text("");
                        return true;
                    }
                }
                if ($("#" + ctrlType).val() == "DL") {
                    return validate_ca_on_driving_license();
                }
            }
        }
    },
    ValidationCardNumber: function (ctrl, paymentType) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);

        var regexp;
        var cardNumber = $(ctrl).val();

        if (cardNumber != "" && paymentType != "") {
            if (paymentType == "Visa") {
                regexp = /^4[0-9]{12}(?:[0-9]{3})?$/;
            }
            else if (paymentType == "MasterCard") {
                regexp = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/;
            }
            else {
            }

            if (regexp.test(cardNumber))
                return true;
            else {
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").css("color", "red");
                $(ctrl).next("p").text("Card Number is not valid.");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }

        }
    },
    ValidationName: function (ctrl) {
        if ($(ctrl).val() != "") {
            var regexp = /^[a-zA-Z\s]+$/;
            if (!Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) {
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").text("Name cannot contain number");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },
    ValidationCVV: function (ctrl) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        if ($(ctrl).val() != "") {
            var regexp = /^[\d][\d][\d]$/;
            if (!Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) {
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").text("Input 3 digit number only");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },
    ValidationBrokerageID: function (brokerageID, ctrl) {
        if (brokerageID >= 0) {
            $(ctrl).next("p").css("display", "none");
            $(ctrl).next("p").text("");
            return true;
        }
        else {
            $(ctrl).next("p").css("display", "inline");
            $(ctrl).next("p").css("background-color", "transparent");
            $(ctrl).next("p").text("Please make sure your Brokerage & name are entered as registered with RECO");
            //$(ctrl).next("p").text("Please select your Brokerage as registered with RECO");
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            if (brokerageID == '') {
                return true;
            } else {
                return false;
            }
        }
    },
    ValidationBrokerageBranch: function (branchID, ctrl) {
        if (branchID != '') {
            $(ctrl).next("p").css("display", "none");
            $(ctrl).next("p").text("");
            return true;
        }
        else {
            $(ctrl).next("p").css("display", "inline");
            $(ctrl).next("p").css("background-color", "transparent");
            $(ctrl).next("p").text("Please select your Brokerage branch");
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
    },
    ValidationBrokerage2ID: function (brokerageID, ctrl) {
        if (brokerageID != 0) {
            $(ctrl).next("p").css("display", "none");
            $(ctrl).next("p").text("");
            return true;
        }
        else {
            $(ctrl).next("p").css("display", "inline");
            $(ctrl).next("p").css("background-color", "transparent");
            //$(ctrl).next("p").text("Please make sure your Brokerage & name are entered as registered with RECO");
            $(ctrl).next("p").text("Please select your Brokerage as registered with your Agent Association.");
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
    },
    ValidationRecoNumber: function (ctrl) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        if ($(ctrl).val() != "") {
            var regexp = /^(\d){7}$/;
            if ((!Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) || !(value * 1 > 0)) {
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").text("Enter Correct RECO Number");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },
    ProcessBrokerage: function () {
        var firstname = escape($.trim($("#txt_bro_firstname").val()));
        var lastname = escape($.trim($("#txt_bro_lastname").val()));
        if (firstname != "" && lastname != "") {
            $.ajax({
                type: "POST",
                url: "/Stateless.asmx/ProcessCompanyByFirstNameAndLastName",
                data: "{'firstName': '" + firstname + "', 'lastName': '" + lastname + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    if (data.d == false) {
                        var t = data.d;
                    }
                },
                error: function (a, b, c) {
                    alert(b);
                }
            });
        }
    },
    ValidationEmailStaffAddressInRex: function (ctrl, callback) {
        var value = $.trim($(ctrl).val());
        var val = $(ctrl).val(value);
        var result = false;
        $.ajax({
            type: "POST",
            async: false,
            url: "/Stateless.asmx/ValidateEmailStaffAddressInRex",
            data: "{'emailAddress': '" + value + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                if (data.d == false) {
                    $(ctrl).next("p").css("display", "inline");
                    $(ctrl).next("p").css("background-color", "transparent");
                    $(ctrl).next("p").text(MessageList["staffEmailRegistered"]);
                    $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                    $(ctrl).css("background-color", "#ffcdc2");

                    if (callback != null && callback != undefined && callback != "undefined") {
                        callback();
                    }

                    result = false;
                    return false;
                }
                else {
                    $(ctrl).next("p").css("display", "none");
                    $(ctrl).next("p").text("");
                    result = true;
                    return true;
                }
            },
            error: function (a, b, c) {
                alert(b);
            }
        });

        return result;
    },
    ValidationEmailAddressInRex: function (ctrl, callback) {
        var value = $.trim($(ctrl).val());
        var val = $(ctrl).val(value);
        var result = false;
        if (val != "" && Register.ValidationEmail(val)) {
            $.ajax({
                type: "POST",
                async: false,
                url: "/Stateless.asmx/ValidateEmailAddressInRex",
                data: "{'emailAddress': '" + value + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    if (data.d == true) {
                        $(ctrl).next("p").css("display", "inline");
                        $(ctrl).next("p").css("background-color", "transparent");
                        $(ctrl).next("p").text("Email address already exists.");
                        $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                        $(ctrl).css("background-color", "#ffcdc2");

                        if (callback != null && callback != undefined && callback != "undefined") {
                            callback();
                        }

                        result = false;
                        return false;
                    }
                    else {
                        $(ctrl).next("p").css("display", "none");
                        $(ctrl).next("p").text("");
                        result = true;
                        return true;
                    }
                },
                error: function (a, b, c) {
                    alert(b);
                }
            });
        }

        return result;
    },
    ValidationLoginUserNameInRex: function (ctrl) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        var result = false;
        $.ajax({
            type: "POST",
            async: false,
            url: "/Stateless.asmx/ValidateLoginUserNameInRex",
            data: "{'emailAddress': '" + value + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                if (data.d == true) {
                    $(ctrl).next("p").css("display", "inline");
                    $(ctrl).next("p").css("background-color", "transparent");
                    $(ctrl).next("p").text("Email address already exists.");
                    $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                    $(ctrl).css("background-color", "#ffcdc2");
                    result = true;
                }
                else {
                    $(ctrl).next("p").css("display", "none");
                    $(ctrl).next("p").text("");
                    result = false;
                }
            },
            error: function (a, b, c) {
                alert(b);
            }
        });

        return result;
    },
    IsAlreadyCondoNowUser: function (ctrl) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        var result = false;
        $.ajax({
            type: "POST",
            async: false,
            url: "/Stateless.asmx/ValidateLoginUserNameInRex",
            data: "{'emailAddress': '" + value + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                if (data.d == true) {
                    result = true;
                }
                else {
                    result = false;
                }
            },
            error: function (a, b, c) {
                alert(b);
            }
        });

        return result;
    },
    // Note: To get only the first part of the message please send an extra parameter msg2 = true
    CheckLoginUserNameInRexForValidation: function (ctrl, msg2, callback) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        var result = false;
        $.ajax({
            type: "POST",
            async: false,
            url: "/Stateless.asmx/ValidateLoginUserNameInRex",
            data: "{'emailAddress': '" + value + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                if (data.d == false) {
                    $(ctrl).next("p").css("display", "inline");
                    $(ctrl).next("p").css("background-color", "transparent");
                    $(ctrl).next("p").text(MessageList['loginEmailExists']);
                    if (msg2) {
                        $(ctrl).next("p").text("This email is not registered.");
                    }
                    $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                    $(ctrl).css("background-color", "#ffcdc2");
                    result = false;
                }
                else {
                    $(ctrl).next("p").css("display", "none");
                    $(ctrl).next("p").text("");
                    result = true;
                }
            },
            complete: function () {
                if (typeof callback != 'undefined') {
                    callback(result);
                }
            },
            error: function (a, b, c) {
                alert(b);
            }
        });

        return result;
    },
    agentEmailOnFocus: function () {
        $("#txtAgentEmailBlock3").css('background-color', '');
        $("#txtAgentEmailBlock3").parent().parent().css('background-color', '');
    },
    RedirectToAgentSite: function () {   
        //window.location.href = $("#hidAgentDomainUrl").val();
        window.location.href = "https://agent.condonow.com";
    },
    generateMoveToAgentCountBlockWithOutEmail: function (emailAddress) {
        $("#dvContactModule").hide();
        $("#AgentBlock").show();
        $("#txtEmail1").val("");
        $("#txtAgentEmailBlock3").val(emailAddress);
        $("#txtBlock1Email").val(emailAddress);
        $("#txtAgentEmailBlock4").css('background-color', '#fff8dc');
        $("#txtAgentEmailBlock4").parent().parent().css('background-color', '#fff8dc');
        $("#divEmail2").removeClass("showHide");
    },
    generateMoveToAgentCountBlockWithOutPhone: function (Phone) {
        $("#dvContactModule").hide();
        $("#AgentBlockPhoneNumber").show();
        $("#txtPhone1").val("");
        $("#txtAgentPhonelBlock").val(Phone);
        $("#txtAgentPhonelBlock").css('background-color', '#fff8dc');
        $("#txtAgentPhonelBlock").parent().parent().css('background-color', '#fff8dc');
    },
    makeBlockVisible: function (blockToVisible, IsAnimation) {

        $("#GuestUserBlock").hide();
        $("#RealtorsBlock").hide();
        $("#AgentBlock").hide();
        $("#AgentCountBlock").hide();
        $("#AgentBlockPhoneNumber").hide();

        $("#ThankyouBlock").hide();
        if (blockToVisible == 'RealtorsBlock' && (IsAnimation == true)) {
            $("#" + blockToVisible).show("slide", { direction: "right" }, 400);
            //$("#" + blockToVisible).show();
        }
        else if (blockToVisible == 'GuestUserBlock' && (IsAnimation == true)) {
            $("#" + blockToVisible).show("slide", { direction: "left" }, 400);
            //$("#" + blockToVisible).show();
        }
        else {
            $("#" + blockToVisible).show();
        }
    },
    CheckLoginUserTypeByNameInRex: function (ctrl, msg2, callback) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        var result = -2;
        $.ajax({
            type: "POST",
            async: false,
            url: "/Stateless.asmx/GetUserTypeForEmailExists",
            data: "{'emailAddress': '" + value + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                if (data.d == false) {
                    $(ctrl).next("p").css("display", "inline");
                    $(ctrl).next("p").css("background-color", "transparent");
                    $(ctrl).next("p").text(MessageList['loginEmailExists']);
                    if (msg2) {
                        $(ctrl).next("p").text("This email is not registered.");
                    }
                    $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                    $(ctrl).css("background-color", "#ffcdc2");
                    result = -1;
                }
                else {
                    $(ctrl).next("p").css("display", "none");
                    $(ctrl).next("p").text("");
                    result = parseInt(data.d);
                    Register.generateMoveToAgentCountBlockWithOutEmail(value);
                }
            },
            complete: function () {
                if (typeof callback != 'undefined') {
                    callback(result);
                }
            },
            error: function (a, b, c) {
                alert(b);
            }
        });

        return result;
    },
    ValidationURL: function (ctrl) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        if ($(ctrl).val() != "") {
            var strPattern = "^([hH][tT][tT][pP]([sS]?)\:\/\/)?[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\‌​-‌​\.\?\,\'\/\\\+&amp;%\$#_\-]*)?$";
            var regexp = new RegExp(strPattern);
            if (!Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) {
                var message = "Invalid Url";
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                var className = $(ctrl).attr("class");
                $(ctrl).next("p").text(message);
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").css("background-color", "");
                $(ctrl).parent().parent().css("background-color", "");
                $(ctrl).css("background-color", "");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },

    ValidationPhoneNumber: function (ctrl) {
        var value = $.trim($(ctrl).val());       
        if ($(ctrl).val() != "") {             
            var regexp = /^([+0-9])?((011[ 0-9\s]*)|(1?[-+\s]?([(]?[0-9\s]{1}\d{2}[)]?[-\s ]?\d{3}[-\s ]?\d{4})([ ]?(ext|Ext|EXT|x|X|Ex|ex)?[.\s]?[\s ]?\d{1,6})?))$/;
            //var regexp1 = /^([+1]{2}?)([0-9]{3})([0-9]{3})(\d+)$/;
            if (!Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) {
                $(ctrl).next("p").css("display", "inline");                
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").text("Enter Correct Tel Number");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                $(ctrl).parent().next("p").css("display", "inline");
                $(ctrl).parent().next("p").css("background-color", "transparent");
                $(ctrl).parent().next("p").text("Enter Correct Tel Number");
                $(ctrl).parent().parent().parent().css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).parent().parent().css("background-color", "");
                $(ctrl).css("background-color", "");
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                $(ctrl).parent().parent().css("background-color", "");
                $(ctrl).parent().parent().parent().css("background-color", "");
                $(ctrl).css("background-color", "");
                $(ctrl).parent().next("p").css("display", "none");
                $(ctrl).parent().next("p").text("");
                return true;
            }
        }
    },

    ValidationFaxNumber: function (ctrl) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        if ($(ctrl).val() != "") {
            var regexp = /^((011[ 0-9]*)|(1?[- ]?([(]?[2-9]{1}\d{2}[)]?[- ]?\d{3}[- ]?\d{4})([ ]?(ext|Ext|EXT|x|X|Ex|ex)?[.]?[ ]?\d{1,6})?))$/;
            if (!Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) {
                $(ctrl).next("p").css("display", "inline");
                //$(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").text("Enter Correct Fax Number");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },

    ValidateCurrency: function (ctrl) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        if ($(ctrl).val() != "") {
            var regexp = /^\$?(?:\d+|\d{1,3}(?:,\d{3})*)(?:\.\d{1,4}){0,1}$/;
            //var regexp = /^[\d.,\$]+$/;
            if (!Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) {
                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").css("background-color", "transparent");
                $(ctrl).next("p").text("Currency Required");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                return true;
            }
        }
    },
    ValidationCompanyID: function (companyID, ctrl) {
        if (companyID > 0) {
            $(ctrl).next("p").css("display", "none");
            $(ctrl).next("p").text("");
            return true;
        }
        else {
            $(ctrl).next("p").css("display", "inline");
            $(ctrl).next("p").css("background-color", "transparent");
            $(ctrl).next("p").text("Please select your company");
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
    },
    ValidationCharacterLength: function (ctrl, length) {
        if ($(ctrl).val().trim().length < length) {
            $(ctrl).next("p").css("display", "inline");
            $(ctrl).next("p").css("background-color", "transparent");
            $(ctrl).next("p").text("Email body should be minimum " + length + " characters.");
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
        $(ctrl).next("p").css("display", "none");
        $(ctrl).next("p").text("");
        $(ctrl).parent().parent().css("background-color", "");
        $(ctrl).css("background-color", "");
        return true;
    },
    ValidationClearMessage: function (ctrl) {
        $(ctrl).css("background-color", "");
        $(ctrl).next("p").css("display", "none");
        $(ctrl).next("p").css("background-color", "");
        $(ctrl).parent().parent().css("background-color", "");
        $(ctrl).next("p").text("");
    },
    ValidatePopupCheckBoxList: function (ctrl, elementValue, message) {
        if ($.trim(elementValue) == '') {
            $(ctrl).find(".p_errorMsg").css("display", "inline");
            $(ctrl).find(".p_errorMsg").css("background-color", "transparent");
            $(ctrl).find(".p_errorMsg").text(message);
            $(ctrl).addClass("div_error_wrapper");
            $(ctrl).parent().css("background-color", "#ffcdc2");
            $(ctrl).find(".p_errorMsg").css('display', 'inline');
            return false;
        } else {
            $(ctrl).find(".p_errorMsg").css("display", "none");
            $(ctrl).find(".p_errorMsg").text("");
            $(ctrl).removeClass("div_error_wrapper");
            $(ctrl).parent().css("background-color", "");
            return true;
        }
    },
    Capitalise: function (ctrl) {
        var textValue = $.trim($(ctrl).val());
        var capitaliseResult = '';

        if (textValue != '') {
            if (textValue.indexOf("'") > 0) {
                var result = textValue.split("'");

                $.each(result, function (item, value) {
                    capitaliseResult += value.charAt(0).toUpperCase() + value.slice(1) + "'";
                });

                capitaliseResult = capitaliseResult.substring(0, capitaliseResult.length - 1);
                textValue = capitaliseResult;
            }

            if (textValue.indexOf(" ") > 0) {
                capitaliseResult = '';
                var result = textValue.split(" ");

                $.each(result, function (item, value) {
                    capitaliseResult += value.charAt(0).toUpperCase() + value.slice(1) + " ";
                });

                textValue = capitaliseResult;
            }

            if (textValue.indexOf("-") > 0) {
                capitaliseResult = '';
                var result = textValue.split("-");

                $.each(result, function (item, value) {
                    capitaliseResult += value.charAt(0).toUpperCase() + value.slice(1) + "-";
                });

                capitaliseResult = capitaliseResult.substring(0, capitaliseResult.length - 1);

                textValue = capitaliseResult;
            }

            if (textValue.indexOf("'") == -1 && textValue.indexOf(" ") == -1 && textValue.indexOf("-") == -1) {
                capitaliseResult = textValue.charAt(0).toUpperCase() + textValue.slice(1);
                textValue = capitaliseResult;
            }

            $(ctrl).val(textValue.trim());
        }
    },
    CheckLoginUserNameInRex: function (ctrl, msg2, callback) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        var result = false;
        $.ajax({
            type: "POST",
            async: false,
            url: "/Stateless.asmx/ValidateLoginUserNameInRex",
            data: "{'emailAddress': '" + value + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                if (data.d == false) {
                    $(ctrl).next("p").css("display", "inline");
                    $(ctrl).next("p").css("background-color", "transparent");
                    $(ctrl).next("p").text(MessageList['loginEmailExists']);
                    if (msg2) {
                        $(ctrl).next("p").text("This email is not registered.");
                    }
                    $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                    $(ctrl).css("background-color", "#ffcdc2");
                    result = false;
                }
                else {
                    $(ctrl).next("p").css("display", "none");
                    $(ctrl).next("p").text("");
                    result = true;
                }
            },
            complete: function () {
                if (typeof callback != 'undefined') {
                    callback(result);
                }
            },
            error: function (a, b, c) {
                alert(b);
            }
        });

        return result;
    }
};

var Utils = {
    CheckInputAgainstExpression: function (inputs, expression) {
        return expression.test(inputs);
    }
};

$(document).ready(function () {

    $("#div_keepcheck").toggle(function (event) {
        $("#div_keepcheck img").attr("src", "/images/check_checked.png");
    }, function () {
        $("#div_keepcheck img").attr("src", "/images/check_blank.png");
    });
    $("#div_accept").toggle(function (event) {
        $("#div_accept img").attr("src", "/images/check_checked.png");
        $("#div_accept p.p_error").css("display", "none");

    }, function () {
        $("#div_accept img").attr("src", "/images/check_blank.png");
    });
    $("input, textarea").focus(function (event) {
        if ($(event.target).attr("no-validation") == "true") return;
        $(event.target).css("background-color", "#ffffff");
        $(event.target).next("p").css("display", "none");
        if($(event.target).next("p").length == 0)
            $($(event.target).parent().find('p')).css("display", "none"); 
        $(event.target).next("div").css("display", "none");
        $(event.target).parent().parent().css("background-color", "");
        $(event.target).parents().closest("td").css("background-color", "");
    });
    $("select").focus(function (event) {
        if (!$(event.target).hasClass("SelectClass"))
            $(event.target).next("p").css("display", "none");

        if ($("#contactlist").length == 0)
            $(event.target).parents().closest("td").css("background-color", "#ffffff");
        $(event.target).css("background-color", "#ffffff");
    });
    $(".p_error, .p_errorSelect, .p_errorInput").click(function (event) {
        $(event.target).css("display", "none");
        $($(event.target).prev('textarea')).focus();
        $($(event.target).prev('input')).focus();
    });
    $(".tdControl:has(input)").click(function (event) {
        $(event.target).find("p").css("display", "none");
        $(event.target).css("background-color", "#ffffff");
        $(event.target).find("input").show().focus();
    });
});

function OnclickRow(ctrl) {
    var $ctrl = $(ctrl);
    $ctrl.find("select").show();
    $ctrl.find("p").css("display", "none");
    $ctrl.css("background-color", "#ffffff");
    $ctrl.find("select").css("background-color", "#ffffff");
    $ctrl.next("p").css("display", "none");
    if ($("#contactlist").length == 0) {
        $ctrl.parents().closest("td").css("background-color", "#ffffff");
        $ctrl.parents().closest("td").next().css('background-color', '#ffffff');
    }
    $ctrl.find('.dd-container').show().css("background-color", "#fff"); //ddSlick dropdownlist.
}
function LonginValidationCheck() {
    var flag = true;
    var valicheck = true;
    flag = Register.ValidationEmpty($("#txtUserName"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txtPassword"));
    if (flag == false) valicheck = false;
    return valicheck;
}

function BrokerPasswordValidationCheck() {
    var flag = true;
    var valicheck = true;
    flag = Register.ValidationEmpty($("#txt_bro_password"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_bro_confirmpassword"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationPassword($("#txt_bro_password"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationConfirmPassword($("#txt_bro_password"), $('#txt_bro_confirmpassword')[0]);
    if (flag == false) valicheck = false;
    return valicheck;
}

function BrokerValidationCheck() {
    var flag = true;
    var valicheck = true;
    flag = Register.ValidationEmptyforDynamicSelect($("#ddl_bro_salutation"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationEmpty($("#txt_bro_firstname"));
    if (flag == false) valicheck = false;

    if (flag) {
        flag = Register.ValidationHTMLTag($("#txt_bro_firstname"));
        if (flag == false) valicheck = false;
    }
    if (flag) {
        flag = Register.ValidationOnlyforNumber($("#txt_bro_firstname"));
        if (flag == false) valicheck = false;
    }

    flag = Register.ValidationHTMLTag($("#txt_bro_middlename"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationEmpty($("#txt_bro_lastname"));
    if (flag == false) valicheck = false;

    if (flag) {
        flag = Register.ValidationHTMLTag($("#txt_bro_lastname"));
        if (flag == false) valicheck = false;
    }
    if (flag) {
        flag = Register.ValidationOnlyforNumber($("#txt_bro_lastname"));
        if (flag == false) valicheck = false;
    }
    flag = Register.ValidationCellNumber($("#txt_bro_cellnumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_bro_cellnumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_bro_email"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmail($("#txt_bro_email"));
    if (flag == false) valicheck = false;

    if ($("#ddl_bro_provincestate").length > 0) {
        flag = Register.ValidationEmptyforDynamicSelect($("#ddl_bro_provincestate"));
        if (flag == false) valicheck = false;
    }

    flag = Register.ValidationEmpty($("#txt_bro_brokeragefirm"));
    if (flag == false) valicheck = false;
    //    flag = Register.ValidationBrokerageID($("#hfbrokerageID").val(), $("#txt_bro_brokeragefirm"));
    //    if (flag == false) valicheck = false;

    flag = Register.ValidationEmpty($("#txt_bro_reconumber"));
    if (flag == false) valicheck = false;

    if ($('#ddl_bro_provincestate').val() != '' && $('#ddl_bro_provincestate').val() != 'ON') {
        flag = Register.ValidationBrokerage2ID($("#hfbrokerageID").val(), $("#txt_bro_brokeragefirm"));
        if (flag == false) valicheck = false;
    }

    var selectBrokerage = $("#txt_bro_brokeragefirm")[0].value;

    if ((selectBrokerage.toLowerCase().indexOf("aareas demo") == -1) && $("#hfbrokerageID").val() < 100000 && $('#ddl_bro_provincestate').val() == 'ON') {

        flag = Register.ValidationRecoNumber($("#txt_bro_reconumber"));
        if (flag == false) valicheck = false;
    }

    flag = Register.ValidationEmpty($("#txt_bro_password"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationConfirmPassword($("#txt_bro_password"), $('#txt_bro_confirmpassword')[0]);
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_bro_confirmpassword"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationConfirmPassword($("#txt_bro_confirmpassword"), $('#txt_bro_password')[0]);
    if (flag == false) valicheck = false;
    flag = Register.ValidationPassword($("#txt_bro_password"));
    if (flag == false) valicheck = false;
    //    if (valicheck == true) {
    //        flag = Register.ValidationAccept($("#img_acceptBrokerTerms"));
    //    }
    //    if (flag == false) valicheck = false;

    if (!valicheck) {
        scrollToFirstErrorPosition();
    }

    return valicheck;
}

function BrokerUpdateValidationCheck() {
    var flag = true;
    var valicheck = true;
    flag = Register.ValidationEmptyforSelect($("#ddl_bro_salutation"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_bro_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_bro_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txt_bro_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_bro_middlename"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txt_bro_middlename"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_bro_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_bro_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txt_bro_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationCellNumber($("#txt_bro_cellnumber"));
    if (flag == false) valicheck = false;
    flag = ($("#txt_bro_directnumber")[0]) && Register.ValidationPhoneNumber($("#txt_bro_directnumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_bro_cellnumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_bro_email"));
    if (flag == false) valicheck = false;
    flag = ($("#txt_bro_yearsexperience")[0]) && Register.ValidationInteger($("#txt_bro_yearsexperience"));
    if (flag == false) valicheck = false;

    if ($("#ddl_bro_provincestate").length > 0) {
        flag = Register.ValidationEmptyforSelect($("#ddl_bro_provincestate"));
        //flag = Register.ValidationEmptyforDynamicSelect($("#ddl_bro_provincestate"));
        if (flag == false) valicheck = false;
    }

    flag = Register.ValidationEmpty($("#txt_bro_brokeragefirm"));
    if (flag == false) valicheck = false;
    //    flag = Register.ValidationBrokerageID($("#hfbrokerageID").val(), $("#txt_bro_brokeragefirm"));
    //    if (flag == false) valicheck = false;

    if ($("#ddl_brokeragebranch").length > 0) {
        var eventStr = $("#ddl_brokeragebranch").attr("onblur");
        if (eventStr != undefined & eventStr != '') {
            flag = Register.ValidationEmptyforSelect($("#ddl_brokeragebranch"));
            //flag = Register.ValidationEmptyforDynamicSelect($("#ddl_brokeragebranch"));
            if (flag == false) valicheck = false;
        }
    }

    flag = Register.ValidationEmpty($("#txt_bro_reconumber"));
    if (flag == false) valicheck = false;

    if ($('#ddl_bro_provincestate').val() != '' && $('#ddl_bro_provincestate').val() != 'ON') {
        flag = Register.ValidationBrokerage2ID($("#hfbrokerageID").val(), $("#txt_bro_brokeragefirm"));
        if (flag == false) valicheck = false;
    }

    var selectBrokerage = $("#txt_bro_brokeragefirm")[0].value;

    if ((selectBrokerage.toLowerCase().indexOf("aareas demo") == -1) && $("#hfbrokerageID").val() < 100000 && $('#ddl_bro_provincestate').val() == 'ON') {

        flag = Register.ValidationRecoNumber($("#txt_bro_reconumber"));
        if (flag == false) valicheck = false;
    }

    flag = Register.ValidationConfirmPassword($("#txt_bro_password"), $('#txt_bro_confirmpassword')[0]);
    if (flag == false) valicheck = false;
    flag = Register.ValidationConfirmPassword($("#txt_bro_confirmpassword"), $('#txt_bro_password')[0]);
    if (flag == false) valicheck = false;

    if ($("#txt_bro_aboutme").length > 0) {
        flag = Register.ValidationEmpty($("#txt_bro_aboutme"));
        if (flag == false) valicheck = false;
    }

    var neighbourhoodText = $("#NeighbourhoodExpertiseList + .CaptionCont > span").text().trim();
    var neighbourhoodExperties = (neighbourhoodText != 'Select Neighbourhood') ? neighbourhoodText : "";
    if ($("#dvNeighbourhood").length > 0) {
        flag = Register.ValidatePopupCheckBoxList($("#dvNeighbourhood"), neighbourhoodExperties, "Required");
        if (flag == false) valicheck = false;
    }

    var languageText = $("#SpokenLanguagesList + .CaptionCont > span").text().trim();
    var spokenLanguages = (languageText != 'Select Languages') ? languageText : "";
    if ($("#dvSpokenLanguage").length > 0) {
        flag = Register.ValidatePopupCheckBoxList($("#dvSpokenLanguage"), spokenLanguages, "Required");
        if (flag == false) valicheck = false;
    }

    var propertyText = $("#PropertyList + .CaptionCont > span").text().trim();
    var propertyExpertise = (propertyText != 'Select Property') ? propertyText : "";
    if ($("#dvPropertyExpertise").length > 0) {
        flag = Register.ValidatePopupCheckBoxList($("#dvPropertyExpertise"), propertyExpertise, "Required");
        if (flag == false) valicheck = false;
    }

    if (!valicheck) {
        scrollToFirstErrorPosition();
    }

    return valicheck;
}
function ProspectUpdateValidationCheck() {
    var flag = true;
    var valicheck = true;
    flag = Register.ValidationEmptyforSelect($("#ddl_pro_salutation"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_pro_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txt_pro_firstname"));
    if (flag == false) valicheck = false;
    else {
        flag = Register.ValidationProspectNameforNumber($("#txt_pro_firstname"));
        if (flag == false) valicheck = false;
    }
    flag = Register.ValidationHTMLTag($("#txt_pro_middlename"));
    if (flag == false) valicheck = false;
    else {
        flag = Register.ValidationProspectNameforNumber($("#txt_pro_middlename"));
        if (flag == false) valicheck = false;
    }
    flag = Register.ValidationEmpty($("#txt_pro_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txt_pro_lastname"));
    if (flag == false) valicheck = false;
    else {
        flag = Register.ValidationProspectNameforNumber($("#txt_pro_lastname"));
        if (flag == false) valicheck = false;
    }
    if (flag == false) valicheck = false;
    flag = Register.ValidationCellNumber($("#txt_pro_cellnumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationPhoneNumber($("#txt_pro_directnumber"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationURL($("#txt_pro_linkedin"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationURL($("#txt_pro_facebook"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationURL($("#txt_pro_twitter"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationURL($("#txt_pro_googleplus"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationURL($("#txt_pro_website"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationEmpty($("#txt_pro_email"));
    if (flag == false) valicheck = false;

    return valicheck;
}
function BrokerPasswordAndAgreementCheck() {

    var flag = true;
    var valicheck = true;
    flag = Register.ValidationEmpty($("#txt_bro_password"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationConfirmPassword($("#txt_bro_password"), $('#txt_bro_confirmpassword')[0]);
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_bro_confirmpassword"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationConfirmPassword($("#txt_bro_confirmpassword"), $('#txt_bro_password')[0]);
    if (flag == false) valicheck = false;
    flag = Register.ValidationPassword($("#txt_bro_password"));
    if (flag == false) valicheck = false;
    if (valicheck == true) {
        flag = Register.ValidationAccept($("#img_acceptBrokerTerms"));
    }
    if (flag == false) valicheck = false;
    return valicheck;
}

function CollaboratorValidationCheck() {
    var flag = true;
    var valicheck = true;

    flag = Register.ValidationEmptyforSelect($("#ddl_col_salutation"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationEmpty($("#txt_col_firstname"));
    if (flag == false) valicheck = false;

    if (flag) {
        flag = Register.ValidationHTMLTag($("#txt_col_firstname"));
        if (flag == false) valicheck = false;
    }
    if (flag) {
        flag = Register.ValidationOnlyforNumber($("#txt_col_firstname"));
        if (flag == false) valicheck = false;
    }

    flag = Register.ValidationOnlyforNumber($("#txt_col_middlename"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationHTMLTag($("#txt_col_middlename"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationEmpty($("#txt_col_lastname"));
    if (flag == false) valicheck = false;

    if (flag) {
        flag = Register.ValidationHTMLTag($("#txt_col_lastname"));
        if (flag == false) valicheck = false;
    }
    if (flag) {
        flag = Register.ValidationOnlyforNumber($("#txt_col_lastname"));
        if (flag == false) valicheck = false;
    }

    flag = Register.ValidationCellNumber($("#txt_col_cellnumber"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationEmpty($("#txt_col_cellnumber"));
    if (flag == false) valicheck = false;

    if ($("#txt_col_tellnumber").val() != "") {
        flag = Register.ValidationPhoneNumber($("#txt_col_tellnumber"));
        if (flag == false) valicheck = false;
    }

    if ($("#txt_col_fax").val() != "") {
        flag = Register.ValidationFaxNumber($("#txt_col_fax"));
        if (flag == false) valicheck = false;
    }

    flag = Register.ValidationEmpty($("#txt_col_email"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationEmail($("#txt_col_email"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationEmpty($("#txt_col_company"));
    if (flag == false) valicheck = false;

    if ($("#hdnAgencyId").val() == "0") {
        flag = Register.ValidationPhoneNumber($("#txt_company_tel"));
        if (flag == false) valicheck = false;

        flag = Register.ValidationFaxNumber($("#txt_company_fax"));
        if (flag == false) valicheck = false;

        flag = Register.ValidationURL($("#txt_company_website"));
        if (flag == false) valicheck = false;
    }

    flag = Register.ValidationEmpty($("#txt_col_password"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationConfirmPassword($("#txt_col_password"), $('#txt_col_confirmpassword')[0]);
    if (flag == false) valicheck = false;

    flag = Register.ValidationEmpty($("#txt_col_confirmpassword"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationConfirmPassword($("#txt_col_confirmpassword"), $('#txt_col_password')[0]);
    if (flag == false) valicheck = false;

    flag = Register.ValidationPassword($("#txt_col_password"));
    if (flag == false) valicheck = false;

    return valicheck;
}

function NewBrokerValidationCheck() {
    var flag = true;
    var valicheck = true;
    flag = Register.ValidationEmptyforSelect($("#ddl_bro_salutation"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_bro_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_bro_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_bro_middlename"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_bro_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_bro_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationCellNumber($("#txt_bro_cellnumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_bro_cellnumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_bro_email"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmail($("#txt_bro_email"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_bro_brokeragefirm"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_bro_reconumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationRecoNumber($("#txt_bro_reconumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationBrokerageID($("#hfbrokerageID").val(), $("#txt_bro_brokeragefirm"));
    if (flag == false) valicheck = false;

    if (!valicheck) {
        scrollToFirstErrorPosition();
    }

    return valicheck;
}

function PurchaseValidationCheck() {
    var flag = true;
    var valicheck = true;
    flag = Register.ValidationEmptyforSelect($("#ddl_pur_salutation"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_pur_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_pur_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationLength($("#txt_pur_firstname"), 30);
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txt_pur_firstname"));
    if (flag == false) valicheck = false;

    if ($.trim($("#txt_pur_middlename").val()) !== "") {

        flag = Register.ValidationOnlyforNumber($("#txt_pur_middlename"));
        if (flag == false) valicheck = false;
        flag = Register.ValidationLength($("#txt_pur_middlename"), 30);
        if (flag == false) valicheck = false;
        flag = Register.ValidationHTMLTag($("#txt_pur_middlename"));
        if (flag == false) valicheck = false;
    }

    flag = Register.ValidationEmpty($("#txt_pur_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_pur_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationLength($("#txt_pur_lastname"), 30);
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txt_pur_lastname"));
    if (flag == false) valicheck = false;
    if (!Register.ValidationCombinationCheck($("#txt_pur_cellnumber"), 'txt_pur_homenumber', 'Cell Number')) {
        flag = Register.ValidationCombinationCheck($("#txt_pur_homenumber"), 'txt_pur_cellnumber', 'Home Number');
        if (flag == false) valicheck = false;
    }
    if (!Register.ValidationCombinationCheck($("#txt_pur_homenumber"), 'txt_pur_cellnumber', 'Home Number')) {
        flag = Register.ValidationCombinationCheck($("#txt_pur_cellnumber"), 'txt_pur_homenumber', 'Cell Number');
        if (flag == false) valicheck = false;
    }
    flag = Register.ValidationCellNumber($("#txt_pur_cellnumber"));
    if (flag == false) valicheck = false;
    CheckIfMobileExist($("#txt_pur_cellnumber"), function (retval) {
        flag = retval;
    });
    if (flag == false) valicheck = false;
    flag = Register.ValidationCellNumber($("#txt_pur_homenumber"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationEmpty($("#txt_pur_email"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationLength($("#txt_pur_email"), 50);
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmail($("#txt_pur_email"));
    if (flag == false) valicheck = false;

    CheckIfAgentUserExist($("#txt_pur_email"), function (retval) {
        flag = retval;
    });
    if (flag == false) valicheck = false;

    if ($.trim($("#txt_pur_address1").val()) != "") {
        flag = Register.ValidationMinLength($("#txt_pur_address1"), 3);
        if (flag == false) valicheck = false;
        flag = Register.ValidationLength($("#txt_pur_address1"), 80);
        if (flag == false) valicheck = false;
        flag = Register.ValidationHTMLTag($("#txt_pur_address1"));
        if (flag == false) valicheck = false;
    }

    if ($.trim($("#txt_pur_address2").val()) != "") {
        flag = Register.ValidationLength($("#txt_pur_address2"), 30);
        if (flag == false) valicheck = false;
        flag = Register.ValidationHTMLTag($("#txt_pur_address2"));
        if (flag == false) valicheck = false;
    }

    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_pur_city"));
    if (flag == false) valicheck = false
    flag = Register.ValidationHTMLTag($("#txt_pur_city"));
    //    if (flag == false) valicheck = false;
    //    flag = Register.ValidationEmptyforSelect($("#ddl_pur_provincestate"));
    //    if (flag == false) valicheck = false;
    //    flag = Register.ValidationEmpty($("#txt_pur_postalzip"));
    if (flag == false) valicheck = false;

    if ($.trim($("#txt_pur_postalzip").val()) != "") {
        flag = Register.ValidationLength($("#txt_pur_postalzip"), 10);
        if (flag == false) valicheck = false;
        flag = Register.ValidationZipCode($("#txt_pur_postalzip"), $('#ddl_pur_country'));
    }
    //    if (flag == false) valicheck = false
    //    flag = Register.ValidationEmptyforSelect($("#ddl_pur_country"));
    if (flag == false) valicheck = false;
    if (typeof IsPurchaserWorksheet == 'undefined' || !IsPurchaserWorksheet) {
        flag = Register.ValidationEmpty($("#txt_pur_birthdate"));
        if (flag == false) valicheck = false;
    }
    flag = Register.ValidationBirthDateRange($("#txt_pur_birthdate"));
    if (flag == false) valicheck = false;

    var flagThreeChoiceEnabled = IsThreeChoiceEnabled.toLowerCase() == "true" ? true : false;

    if (flagThreeChoiceEnabled) {
        if (IsPurchaserWorksheet != true) {
            if ($("#ddl_pur_idtype").length > 0) {
                flag = Register.ValidationEmptyforSelect($("#ddl_pur_idtype"));
                if (flag == false) valicheck = false;
                flag = Register.ValidationEmpty($("#txt_pur_idnumber"));
                if (flag == false) valicheck = false;
                flag = Register.ValidationDocumentIDType($("#txt_pur_idnumber"), 'ddl_pur_idtype');
                if (flag == false) valicheck = false;
                flag = Register.ValidationDocumentIDPlaceOfIssueCountry();
                if (flag == false) valicheck = false;
                flag = Register.ValidationDocumentIDPlaceOfIssueState();
                if (flag == false) valicheck = false;
                flag = Register.ValidationCountryDocumentIDType(document.getElementById('ddl_pur_docplaceofissue_country'), 'txt_pur_idnumber', 'ddl_pur_idtype');
                if (flag == false) valicheck = false;
            }
        }

        if ($("#rad_pur_canadianresident_yes").length > 0 && $("#rad_pur_canadianresident_yes")[0].checked) {
            if (IsPurchaserWorksheet != true) {
                flag = Register.ValidationEmpty($("#txt_pur_sin"));
                if (flag == false) valicheck = false;
                flag = Register.ValidationSINNumber($("#txt_pur_sin"));
                if (flag == false) valicheck = false;
            }
        }
    }

    flag = Register.ValidationEmptyForPurchaserOccupation($("#txt_pur_occupation"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_pur_occupation"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txt_pur_occupation"));
    if (flag == false) valicheck = false;
    if (!valicheck) {
        scrollToFirstErrorPosition();
    }

    return valicheck;
}




function CheckIfMobileExist(ctrl, callback) {
    var validationPass = false;
    var mobileNo = $.trim($(ctrl).val());
    if (mobileNo == "") {
        return false;
    }
    var jqxhr1 = $.ajax({
        type: "POST",
        async: false,
        cache: false,
        timeout: 30000,
        url: "/Stateless.asmx/CheckMobileInAgentInfo",
        data: "{'mobileNo': '" + mobileNo + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            var _tmp = $.parseJSON(data.d);
            if (_tmp.agentInfo.length > 0 || _tmp.recoInfo > 0) {
                if (parseInt(_tmp.agentInfo[0].BrokerID) > 0 || parseInt(_tmp.agentInfo[0].AgentCount) > 0 || _tmp.recoInfo > 0) {
                    $(ctrl).next("p").css("display", "inline");
                    $(ctrl).next("p").text("Your cell # Indicates you are a Member of CondoNow's Agent Site");
                    $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                    $(ctrl).css("background-color", "#ffcdc2");
                    Register.generateMoveToAgentCountBlockWithOutPhone(mobileNo);
                }
                else {
                    validationPass = true;
                }
            }
            else {
                $(ctrl).parent().parent().css("background-color", "");
                $(ctrl).css("background-color", "");
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                validationPass = true;
            }
            if (typeof callback != 'undefined') {
                callback(validationPass);
            } else {
                return validationPass;
            }


        }
    });






}


function CheckIfAgentUserExist(ctrl, callback) {
    var validationPass = false;
    var emailAddress = $.trim($(ctrl).val());
    if (emailAddress == "") {
        return false;
    }
    var jqxhr1 = $.ajax({
        type: "POST",
        async: false,
        cache: false,
        timeout: 30000,
        url: "/Stateless.asmx/CheckEmailExistsAndgetInfo",
        data: "{'emailAddress': '" + emailAddress + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            var _tmp = $.parseJSON(data.d);
            if (_tmp.agentInfo.length > 0 || _tmp.recoInfo > 0) {
                if (parseInt(_tmp.agentInfo[0].BrokerID) > 0 || parseInt(_tmp.agentInfo[0].AgentCount) > 0 || _tmp.recoInfo > 0) {
                    $(ctrl).next("p").css("display", "inline");
                    $(ctrl).next("p").text("Your email Indicates you are a Member of CondoNow's Agent Site");
                    $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                    $(ctrl).css("background-color", "#ffcdc2");
                }
                else {
                    validationPass = true;
                }
            }
            else {
                $(ctrl).parent().parent().css("background-color", "");
                $(ctrl).css("background-color", "");
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                validationPass = true;
            }
            if (typeof callback != 'undefined') {
                callback(validationPass);
            }
            else {
                return validationPass;
            }
        },
        error: function (a, b, c) {
            alert(b);
        }
    });



}


function CheckIfBrokerFoundbyNeighbourhood(ctrl, callback) {
    
    var validationPass = false;
    var result = false;
    var projectNeighbourhood = $.trim($(ctrl).val());
    if (projectNeighbourhood == "") {
        return false;
    }

    var params = JSON.stringify({
        'projectNeighbourhood': projectNeighbourhood,
        'projectId': $("#hdnProjectID").val()
    });
    $.ajax({
        type: "POST",
        async: false,
        cache: false,
        timeout: 30000,
        url: "/Stateless.asmx/CheckIfBrokerFoundbyNeighbourhood",
        data: params,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {                        
            //debugger;
            if (!data.d) {

                $(ctrl).next("p").css("display", "inline");
                $(ctrl).next("p").text("No Agent In This Coeverage");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
            }
            else {
                $(ctrl).parent().parent().css("background-color", "");
                $(ctrl).css("background-color", "");
                $(ctrl).next("p").css("display", "none");
                $(ctrl).next("p").text("");
                validationPass = true;
            }
            if (typeof callback != 'undefined') {
                callback(validationPass);
            }
            else {
                return validationPass;
            }
        }
    });

}

function PreferenceValidationCheck() {
    var flag = true;
    var validcheck = true;
    flag = Register.ValidationEmptyforSelect($("#ddl_pre_choice1_floorplan"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmpty_ddSlick($("#ddl_pre_choice1_floorplan"), 'ddSlick_pre_choice1_floorplan');
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmptyforSelect($("#ddl_pre_choice1_floorrange"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmptyforSelect($("#ddl_pre_choice1_view"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationforParkingSelect($("#ddl_pre_choice1_parking"));
    if (flag == false) validcheck = false;


    flag = Register.ValidationEmptyforSelect($("#ddl_pre_choice2_floorplan"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmpty_ddSlick($("#ddl_pre_choice2_floorplan"), 'ddSlick_pre_choice2_floorplan');
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmptyforSelect($("#ddl_pre_choice2_floorrange"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmptyforSelect($("#ddl_pre_choice2_view"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationforParkingSelect($("#ddl_pre_choice2_parking"));
    if (flag == false) validcheck = false;


    flag = Register.ValidationEmptyforSelect($("#ddl_pre_choice3_floorplan"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmpty_ddSlick($("#ddl_pre_choice3_floorplan"), 'ddSlick_pre_choice3_floorplan');
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmptyforSelect($("#ddl_pre_choice3_floorrange"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmptyforSelect($("#ddl_pre_choice3_view"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationforParkingSelect($("#ddl_pre_choice3_parking"));
    if (flag == false) validcheck = false;

    if (!validcheck) {
        scrollToFirstErrorPosition();
    }

    return validcheck;
}
function PreferenceValidationCheckFirstChoice() {
    var flag = true;
    var validcheck = true;

    flag = Register.ValidationEmptyforSelect($("#ddl_pre_choice1_floorplan"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmpty_ddSlick($("#ddl_pre_choice1_floorplan"), 'ddSlick_pre_choice1_floorplan');
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmptyforSelect($("#ddl_pre_choice1_floorrange"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmptyforSelect($("#ddl_pre_choice1_view"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationforParkingSelect($("#ddl_pre_choice1_parking"));
    if (flag == false) validcheck = false;

    if (!validcheck) {
        scrollToFirstErrorPosition();
    }

    return validcheck;
}
function ClearAllValidation() {


    $(".table_rounded td.tdtext").css("background-color", "#ffffff");
    $(".table_rounded td.tdtext input").css("background-color", "#ffffff");
    $(".table_rounded td.tdtext select").css("background-color", "#ffffff");
    $(".table_rounded td.tdtext select").show();
    $(".table_rounded td.tdtext p").css("display", "none");
    $(".table_rounded").find("td.tdarrow").css("background-color", "#ffffff");
}

function AvailableSuiteValidationCheck() {
    var flag = true;
    var validcheck = true;

    flag = Register.ValidationEmptyforSelect($("#ddl_pre_choice1_floorplan"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmptyforSelect($("#ddl_pre_choice1_floorrange"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmptyforSelect($("#ddl_pre_choice1_view"));
    if (flag == false) validcheck = false;

    if (!validcheck) {

        var p = $(".p_error:visible:eq(0)");

        if (p.length > 0) {

            toPos = p.offset().top;

            if (toPos > 0);
            {
                if (parent.DoScroll) {
                    parent.DoScroll(toPos - 30);
                }
            }
        }
    }

    return validcheck;
}

function PaymentValidationCheck() {
    var flag = true;
    var validcheck = true;

    flag = Register.ValidationEmpty($("#txt_pay_nameoncard"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmpty($("#txt_pay_cardnumber"));
    if (flag == false) validcheck = false;

    flag = Register.ValidationCardNumber($("#txt_pay_cardnumber"), $("#hdnPaymentMethod").val());
    if (flag == false) validcheck = false;

    flag = Register.ValidationEmpty($("#txt_pay_expiry_date"));
    if (flag == false) validcheck = false;

    flag = Register.ValidationEmpty($("#txt_pay_address1"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmpty($("#txt_pay_city"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmptyforSelect($("#ddl_pay_provincestate"));
    if (flag == false) validcheck = false;
    flag = Register.ValidationEmpty($("#txt_pay_postalzip"));
    if (flag == false) validcheck = false;

    if (!validcheck) {

        var p = $(".p_error:visible:eq(0)");

        if (p.length > 0) {

            toPos = p.offset().top;

            if (toPos > 0);
            {
                if (parent.DoScroll) {
                    parent.DoScroll(toPos - 30);
                }
            }
        }
    }

    return validcheck;
}

function ReFormatCanadaPostCode(txtZipCode) {
    var zipCodePattern = /^([A-Z][0-9][A-Z])\s*([0-9][A-Z][0-9])$/;
    var zipCode = $(txtZipCode).val().toUpperCase();
    var formattedZipCode = zipCode;
    if (zipCode.length == 6 && zipCode.indexOf(" ") == -1) {
        formattedZipCode = zipCode.substr(0, 3) + " " + zipCode.substr(3, 3);
    }

    $(txtZipCode).val(formattedZipCode);
    return formattedZipCode;
}

function NewClearAllValidation(ele) {
    var $ele = $(ele);

    if ($ele.attr("id") && ($ele.attr("id") == "ddl_pre_choice1_floorplan" || $ele.attr("id") == "ddl_pre_choice2_floorplan" || $ele.attr("id") == "ddl_pre_choice3_floorplan")) {
        var $cells = $ele.parents("table.tableDynamic").find(".td-validation");
        $cells.css({ "background-color": "#fff" });
        $cells.find("input").css({ "background-color": "#fff" });
        $cells.find("select").css({ "background-color": "#fff", "display": "block" });
        $cells.find("p.p_errorSelect, p.p_errorInput").css({ "display": "none" });
    }

    if (typeof ele === "undefined") {
        var $cells = $("table.tableDynamic .td-validation");
        $cells.css({ "background-color": "#fff" });
        $cells.find("input").css({ "background-color": "#fff" });
        $cells.find("select").css({ "background-color": "#fff", "display": "block" });
        $cells.find("p.p_errorSelect, p.p_errorInput").css({ "display": "none" });
    }
}

function ModulasCheck(number) {
    var checksum = 0;
    var j = 1;
    var calc;

    for (i = number.length - 1; i >= 0; i--) {
        calc = Number(number.charAt(i)) * j;

        if (calc > 9) {
            checksum = checksum + 1;
            calc = calc - 10;
        }
        checksum = checksum + calc;

        if (j == 1) {
            j = 2;
        } else {
            j = 1;
        }
    }

    if (checksum % 10 != 0) {
        return false;
    }
    else {
        return true;
    }
}


function checkPaymentCookie() {
    var cookies = document.cookie.split(";");
    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i].split("=");
        var name = cookie[0].replace(/^\s+|\s+$/g, "");
        var value = cookie[1].replace(/^\s+|\s+$/g, "");
        if (name == "tx") {
            return unescape(value);
        }
    }
}

function validate_ca_on_driving_license() {
    var ddlcountry = document.getElementById("ddl_pur_docplaceofissue_country");
    var ddlState = document.getElementById("ddl_pur_docplaceofissue_state");
    var ddlIdType = document.getElementById("ddl_pur_idtype");
    var txtInput = document.getElementById("txt_pur_idnumber");
    var txtDob = document.getElementById("txt_pur_birthdate");
    var txtLastName = document.getElementById("txt_pur_lastname");

    if (ddlcountry.value == "CA" && ddlState.value == "ON" && ddlIdType.value == "DL") {
        var regexp = /^[a-zA-Z][0-9]{4}[-|\s]?[0-9]{5}[-|\s]?[0-9]{5}$/;
        //P0000-00000-01231, //P0000-00000-00101

        if (!Utils.CheckInputAgainstExpression(txtInput.value, regexp)) {
            return show_error(txtInput, MessageList["oncaDL"]);
        }
        else {
            if (txtLastName.value != "" && txtInput.value != "" && txtLastName.value.toUpperCase().charAt(0) == txtInput.value.toUpperCase().charAt(0)) {
                if (txtDob.value != "") {
                    var dob = new Date(txtDob.value);

                    var dob_part = dob.toJSON().split("T")[0].split("-");

                    var lic_dob = txtInput.value.substr(txtInput.value.length - 4);

                    var month = lic_dob.substr(0, 2);
                    var day = lic_dob.substr(2, 4);

                    month = month % 50;

                    if (month < 10) {
                        month = "0" + month;
                    }

                    if (dob_part[1] + "" + dob_part[2] == month + "" + day) {
                        return hide_error(txtInput);
                    }
                    else {
                        return show_error(txtInput, MessageList["oncaDL"]);
                    }
                }
                else {
                    return show_error(txtInput, MessageList["oncaDL"]);
                }
            }
            else {
                return show_error(txtInput, MessageList["oncaDL"]);
            }
        }
    }
    else {
        return hide_error(txtInput);
    }
}

function show_error(ctrl, msg) {
    $(ctrl).next("p").css("display", "inline")
    $(ctrl).next("p").css("background-color", "transparent");
    $(ctrl).next("p").text(msg);
    $(ctrl).parent().parent().css("background-color", "#ffcdc2");
    $(ctrl).css("background-color", "#ffcdc2");
    return false;
}

function hide_error(ctrl) {
    $(ctrl).next("p").css("display", "none");
    $(ctrl).next("p").text("");
    $(ctrl).show();
    return true;
}

function ValidatePurchaserInfo() {
    var flag = true;
    var valicheck = true;
    flag = Register.ValidationEmptyforSelect($("#ddl_pur_salutation"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_pur_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_pur_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txt_pur_firstname"));
    if (flag == false) valicheck = false;

    if (!Register.ValidationEmpty($("#txt_pur_middlename"))) {
        flag = Register.ValidationOnlyforNumber($("#txt_pur_middlename"));
        if (flag == false) valicheck = false;

        flag = Register.ValidationHTMLTag($("#txt_pur_middlename"));
        if (flag == false) valicheck = false;
    }

    flag = Register.ValidationEmpty($("#txt_pur_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_pur_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txt_pur_lastname"));
    if (flag == false) valicheck = false;
    if (!Register.ValidationCombinationCheck($("#txt_pur_cellnumber"), 'txt_pur_homenumber', 'Cell Number')) {
        flag = Register.ValidationCombinationCheck($("#txt_pur_homenumber"), 'txt_pur_cellnumber', 'Home Number');
        if (flag == false) valicheck = false;
    }
    if (!Register.ValidationCombinationCheck($("#txt_pur_homenumber"), 'txt_pur_cellnumber', 'Home Number')) {
        flag = Register.ValidationCombinationCheck($("#txt_pur_cellnumber"), 'txt_pur_homenumber', 'Cell Number');
        if (flag == false) valicheck = false;
    }
    flag = Register.ValidationCellNumber($("#txt_pur_cellnumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationCellNumber($("#txt_pur_homenumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_pur_email"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmail($("#txt_pur_email"));
    //    if (flag == false) valicheck = false;
    //    flag = Register.ValidationEmpty($("#txt_pur_address1"));
    if (flag == false) valicheck = false;
    
    flag = Register.ValidationMinLength($("#txt_pur_address1"), 3);
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txt_pur_address1"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txt_pur_address2"));
    //    if (flag == false) valicheck = false;
    //    flag = Register.ValidationEmpty($("#txt_pur_city"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_pur_city"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txt_pur_city"));
    //    if (flag == false) valicheck = false;
    //    flag = Register.ValidationEmptyforSelect($("#ddl_pur_provincestate"));
    //    if (flag == false) valicheck = false;
    //    flag = Register.ValidationEmpty($("#txt_pur_postalzip"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationLength($("#txt_pur_postalzip"), 10);
    if (flag == false) valicheck = false;
    flag = Register.ValidationZipCode($("#txt_pur_postalzip"), $('#ddl_pur_country'));
    //    if (flag == false) valicheck = false
    //    flag = Register.ValidationEmptyforSelect($("#ddl_pur_country"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_pur_birthdate"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationBirthDateRange($("#txt_pur_birthdate"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmptyforSelect($("#ddl_pur_idtype"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_pur_idnumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationDocumentIDType($("#txt_pur_idnumber"), 'ddl_pur_idtype');
    if (flag == false) valicheck = false;
    flag = Register.ValidationDocumentIDPlaceOfIssueCountry();
    if (flag == false) valicheck = false;
    flag = Register.ValidationDocumentIDPlaceOfIssueState();
    if (flag == false) valicheck = false;
    flag = Register.ValidationCountryDocumentIDType(document.getElementById('ddl_pur_docplaceofissue_country'), 'txt_pur_idnumber', 'ddl_pur_idtype');
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_pur_occupation"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_pur_occupation"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txt_pur_occupation"));
    if (flag == false) valicheck = false;

    if ($("#rad_pur_canadianresident_yes")[0].checked) {
        flag = Register.ValidationEmpty($("#txt_pur_sin"));
        if (flag == false) valicheck = false;
        flag = Register.ValidationSINNumber($("#txt_pur_sin"));
        if (flag == false) valicheck = false;
    }

    if (!valicheck) {
        scrollToFirstErrorPosition();
    }

    return valicheck;
}
function AddNewProjectValidationCheck() {
    var flag = true;
    var valicheck = true;
    flag = Register.ValidationEmpty($("#txt_pro_projectname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmptyforSelect($("#ddl_pro_projecttype"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_pro_addresspro"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_pro_closestIntersectionpro"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_pro_MLSpro"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_pro_Neighbourhoodpro"));
    if (flag == false) valicheck = false;
    //flag = Register.ValidationEmpty($("#txt_pro_website"));
    //if (flag == false) valicheck = false;
    flag = Register.ValidationURL($("#txt_pro_website"));
    if (flag == false) valicheck = false;
    //flag = Register.ValidationEmpty($("#txt_pro_email"));
    //if (flag == false) valicheck = false;

    //    if (!Register.ValidationCombinationCheck($("#ddlEstimatedComp"), 'ddlMonth', '')) {
    //        flag = Register.ValidationCombinationCheck($("#ddlMonth"), 'ddlEstimatedComp', '');
    //        if (flag == false) valicheck = false;
    //    }

    flag = Register.ValidationEmptyforSelect($("#ddlSellingStatus"));
    if (flag == false) valicheck = false;
    //flag = Register.ValidationEmpty($("#txt_pro_totalsuites"));
    //if (flag == false) valicheck = false;
    //flag = Register.ValidationEmpty($("#txt_pro_storeys"));
    //if (flag == false) valicheck = false;
    if ($("#txt_pro_totalsuites").val() != "") {
        flag = Register.ValidationLength($("#txt_pro_totalsuites"), 10);
        if (flag) flag = Register.ValidationInteger($("#txt_pro_totalsuites"));
        if (flag) flag = Register.ValidationHTMLTag($("#txt_pro_totalsuites"));
        if (flag == false) valicheck = false;
    }

    if ($("#txt_pro_storeys").val() != "") {
        flag = Register.ValidationLength($("#txt_pro_storeys"), 10);
        if (flag) flag = Register.ValidationInteger($("#txt_pro_storeys"));
        if (flag) flag = Register.ValidationHTMLTag($("#txt_pro_storeys"));
        if (flag == false) valicheck = false;
    }

    if ($("#txt_pro_maintenance").val() != "") {
        flag = Register.ValidationLength($("#txt_pro_maintenance"), 10);
        if (flag) flag = Register.ValidationNumber($("#txt_pro_maintenance"));
        if (flag) flag = Register.ValidationHTMLTag($("#txt_pro_maintenance"));
        if (flag == false) valicheck = false;
    }

    if (!valicheck) {
        scrollToFirstErrorPosition();
    }
    if (valicheck) {
     
        $('#btnSave').unbind('click');
        __doPostBack('btnSave', '');
    }
    else {
        parent.FitPopupClient();
    }
    return valicheck;
}
function RatehubCallbackValidationCheck() {
    var flag = true;
    var valicheck = true;
    flag = Register.ValidationEmpty($("#txt_email"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txt_email"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmail($("#txt_email"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationEmpty($("#txt_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txt_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_firstname"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationEmpty($("#txt_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txt_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_lastname"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationEmpty($("#txt_daytimephone"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationCellNumber($("#txt_daytimephone"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationEmpty($("#txt_evening_phone"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationPhoneNumber($("#txt_evening_phone"));
    if (flag == false) valicheck = false;


    flag = Register.ValidationEmptyforSelect($("#ddl_provincestate"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationEmpty($("#txtCity"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txtCity"));
    if (flag == false) valicheck = false;

    flag = Register.ValidationEmptyforSelect($("#ddlSelectApproval"));
    if (flag == false) valicheck = false;

    return valicheck;
}
var LoginValidation =
{
    ValidationEmpty: function (ctrl) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        if ($(ctrl).val() == "") {
            var message = "Required";
            $("p.common_error").css("display", "inline");
            //$(ctrl).next("p").css("background-color", "transparent");

            $("p.common_error").text(message);
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;
        }
        else {
            $("p.common_error").css("display", "none");
            //$(ctrl).next("p").css("background-color", "");
            $(ctrl).parent().parent().css("background-color", "");
            $(ctrl).css("background-color", "");
            $("p.common_error").text("");
            return true;
        }
    },
    ValidationHTMLTag: function (ctrl) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        if ($(ctrl).val() != "") {
            var regexp = /<|>/;
            if (Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) {
                var message = "Invalid Input";
                $("p.common_error").css("display", "inline");
                $("p.common_error").text(message);
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).css("background-color", "");
                $(ctrl).parent().parent().css("background-color", "");
                $("p.common_error").text("");
                return true;
            }
        }
    },
    ValidationPassword: function (ctrl) {
        if ($(ctrl).val() != "") {
            if ($(ctrl).val().length < 8) {
                $("p.common_error").css("display", "inline");
                $("p.common_error").text("Password must be at least 8 characters");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).css("background-color", "");
                $(ctrl).parent().parent().css("background-color", "");
                $("p.common_error").text("");
                return true;
            }
        }
    },
    ValidationEmail: function (ctrl) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        if ($(ctrl).val() != "") {
            var regexp = /^[\+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
            if (!Utils.CheckInputAgainstExpression($(ctrl).val(), regexp)) {
                $("p.common_error").css("display", "inline");
                $("p.common_error").text("Enter Correct Email");
                $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                $(ctrl).css("background-color", "#ffcdc2");
                return false;
            }
            else {
                $(ctrl).css("background-color", "");
                $(ctrl).parent().parent().css("background-color", "");
                $("p.common_error").text("");
                return true;
            }
        }
    },
    CheckLoginUserNameInRex: function (ctrl) {
        var value = $.trim($(ctrl).val());
        $(ctrl).val(value);
        var result = false;
        $.ajax({
            type: "POST",
            async: false,
            url: "/Stateless.asmx/ValidateLoginUserNameInRex",
            data: "{'emailAddress': '" + value + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                if (data.d == false) {
                    $("p.common_error").css("display", "inline");
                    $("p.common_error").text(MessageList['loginEmailExists']);
                    $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                    $(ctrl).css("background-color", "#ffcdc2");
                    return false;
                }
                else {
                    $(ctrl).css("background-color", "");
                    $(ctrl).parent().parent().css("background-color", "");
                    $("p.common_error").text("");
                    return true;
                }
            },
            error: function (a, b, c) {
                alert(b);
            }
        });

        return result;
    },
    ValidatePasswordAll: function (ctrl) {
        if (this.ValidationEmpty(ctrl)) {
            if (this.ValidationPassword(ctrl)) {
                return true;
            }
            return false;
        }
        return false;
    }
};


function ModelValidationCheck() {
    var flag = true;
    var valicheck = true;
    flag = Register.ValidationEmpty($("#txtModelName"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationHTMLTag($("#txtModelName"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationNumber($("#txtAvailableUnits"));
    if (flag == false) valicheck = false;
    flag = Register.ValidateCurrency($("#txtStartingPrice"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationNumber($("#txtSQFT"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationNumber($("#txtBedroom"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationNumber($("#txtBathRoom"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationNumber($("#txtBalconySqft"));
    if (flag == false) valicheck = false;
    flag = Register.ValidateCurrency($("#txtMaintenanceFeePerMonth"));
    if (flag == false) valicheck = false;
    flag = Register.ValidateCurrency($("#txtPropertyTax"));
    if (flag == false) valicheck = false;

    if (!valicheck) {
        scrollToFirstErrorPosition();
    }

    return valicheck;
}

var RegexValidation = {
    IsEmpty: function (ctrl) {
        var regex = /\S/;
        return this.IsValid(ctrl, regex);
    },

    NonEmpty: function (ctrl) {
        var regex = /\S/;
        return this.Validate(ctrl, regex);
    },

    Number: function (ctrl) {
        var regex = /^\s*\d+\s*$/;
        return this.Validate(ctrl, regex);
    },

    Integer: function (ctrl) {
        var regex = /^\s*(\+|-)?\d+\s*$/;
        return this.Validate(ctrl, regex);
    },

    Decimal: function (ctrl) {
        var regex = /^\s*(\+|-)?((\d+(\.\d+)?)|(\.\d+))\s*$/;
        return this.Validate(ctrl, regex);
    },

    Email: function (ctrl) {
        var regex = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/;
        return this.Validate(ctrl, regex);
    },

    Currency: function (ctrl) {
        var regex = /^\$?(?:\d+|\d{1,3}(?:,\d{3})*)(?:\.\d{1,4}){0,1}$/;
        //regex = /^[\d.,\$]+$/;
        return this.Validate(ctrl, regex);
    },

    HTMLTagFree: function (ctrl) {
        var regex = /<|>/;
        return this.Validate(ctrl, regex);
    },

    CellNumber: function (ctrl) {
        var regex = /^((011[ 0-9]*)|(1?[- ]?([(]?[2-9]{1}\d{2}[)]?[- ]?\d{3}[- ]?\d{4})([ ]?(ext|Ext|EXT|x|X|Ex|ex)?[.]?[ ]?\d{1,6})?))$/;
        return this.Validate(ctrl, regex);
    },
    DeveloperShortNameURL: function (ctrl) {
        var regex = /^.*[':~^{}#&%*? "<>\[\]|\/\\\\].*$/;
        var isNotValid = this.IsValid(ctrl, regex);

        if (isNotValid) {
            $(ctrl).next("p").css("display", "inline");
            $(ctrl).next("p").css("background-color", "transparent");
            $(ctrl).next("p").text("No spaces or special characters allowed for short name");
            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
            $(ctrl).css("background-color", "#ffcdc2");
            return false;

        }
        else {
            return true;
        }
    },
    ValidateNewDeveloperShortName: function (ctrl) {
        var value = $.trim($(ctrl).val());
        var val = $(ctrl).val(value);
        var result = false;
        var developerId = $(ctrl).attr('data-developerid');

        if (developerId = 'undefined') developerId = 0;

        var params = JSON.stringify({
            DeveloperShortName: value,
            DeveloperID: developerId
        });

        if (RegexValidation.NonEmpty(ctrl)) {
            $.ajax({
                type: "POST",
                async: false,
                url: "/Developers/ValidateNewDeveloperShortName",
                data: params,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    
                    if (data == true) {

                        if ($('.fancybox-container fancybox-is-open')) {
                            $(ctrl).next("p").css("display", "inline");
                            $(ctrl).next("p").css("background-color", "transparent");
                            $(ctrl).next("p").text("Developer short name already exists.");
                            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                            $(ctrl).css("background-color", "#ffcdc2");
                            result = false;

                        }
                        else {
                            $(ctrl).next("p").css("display", "");
                            $(ctrl).next("p").css("background-color", "transparent");
                            $(ctrl).next("p").text("Developer short name already exists.");
                            $(ctrl).css("background-color", "#ffcdc2");
                            result = false;
                        }

                    }
                    else {
                        $(ctrl).next("p").css("display", "none");
                        $(ctrl).next("p").text("");
                        result = true;
                    }
                },
                error: function (a, b, c) {
                    alert(b);
                }
            });
        }

        return result;
    },
    ValidateNewDeveloperName: function (ctrl) {
        var value = $.trim($(ctrl).val());
        var val = $(ctrl).val(value);
        var result = false;

        var params = JSON.stringify({
            DeveloperName: value,
        });

        if (RegexValidation.NonEmpty(ctrl)) {
            $.ajax({
                type: "POST",
                async: false,
                url: "/Developers/ValidateNewDeveloperName",
                data: params,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    if (data == true) {

                        if ($('.fancybox-container fancybox-is-open')) {
                            $(ctrl).next("p").css("display", "inline");
                            $(ctrl).next("p").css("background-color", "transparent");
                            $(ctrl).next("p").text("Developer name already exists.");
                            $(ctrl).parent().parent().css("background-color", "#ffcdc2");
                            $(ctrl).css("background-color", "#ffcdc2");

                        }
                        else {
                            $(ctrl).next("p").css("display", "");
                            $(ctrl).next("p").css("background-color", "transparent");
                            $(ctrl).next("p").text("Developer short name already exists.");
                            $(ctrl).css("background-color", "#ffcdc2");
                            result = false;
                            //return false;
                        }

                    }
                    else {
                        $(ctrl).next("p").css("display", "none");
                        $(ctrl).next("p").text("");
                        result = true;
                        //return true;
                    }
                },
                error: function (a, b, c) {
                    alert(b);
                }
            });
        }

        return result;
    },
    ValidateDeveloperShortName: function (ctrl) {
        var value = $.trim($(ctrl).val());
        var val = $(ctrl).val(value);
        var result = false;
        var developerId = $(ctrl).attr('data-developerid');

        var params = JSON.stringify({
            DeveloperShortName: value,
            DeveloperID: developerId
        });

        if (RegexValidation.NonEmpty(ctrl)) {
            $.ajax({
                type: "POST",
                async: false,
                url: "/Stateless.asmx/ValidateDeveloperShortName",
                data: params,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    if (data.d == true) {
                        $(ctrl).next("p").css("display", "");
                        $(ctrl).next("p").css("background-color", "transparent");
                        $(ctrl).next("p").text("Developer short name already exists.");
                        $(ctrl).css("background-color", "#ffcdc2");
                        result = false;
                        //return false;
                    }
                    else {
                        $(ctrl).next("p").css("display", "none");
                        $(ctrl).next("p").text("");
                        result = true;
                        //return true;
                    }
                },
                error: function (a, b, c) {
                    alert(b);
                }
            });
        }

        return result;
    },
    IsValid: function (ctrl, regex) {
        var value = $.trim($(ctrl).val());
        return String(value).search(regex) != -1;
    },
    Validate: function (ctrl, regex) {
        var isValid = this.IsValid(ctrl, regex);
        if (!isValid)
            $(ctrl).css("background-color", "#ffcdc2");
        else $(ctrl).css("background-color", "");
        return isValid;
    }
};

function AddStaffValidationCheck() {
    var flag = true;
    var valicheck = true;
    flag = Register.ValidationEmptyforSelect($("#ddl_emp_salutation"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_emp_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_emp_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_emp_middlename"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_emp_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_emp_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_emp_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmptyforSelect($("#ddl_emp_title"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_emp_cellnumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationCellNumber($("#txt_emp_cellnumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_emp_email"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmail($("#txt_emp_email"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmailStaffAddressInRex($("#txt_emp_email"));
    if (flag == false) valicheck = false;
    flag = Register.ValidatePasswordAll($('#txt_emp_password')[0]);
    if (flag == true) {
        flag = Register.ValidateConfirmPasswordAll($('#txt_emp_confirmpassword')[0], $('#txt_emp_password')[0]);
        if (flag == false) valicheck = false;
    } else {
        valicheck = false;
    }
    flag = Register.ValidateConfirmPasswordAll($('#txt_emp_confirmpassword')[0], $('#txt_emp_password')[0]);
    if (flag == true) {
        flag = Register.ValidatePasswordAll($('#txt_emp_password')[0]);
        if (flag == false) valicheck = false;
    } else {
        valicheck = false;
    }
    if (flag == false) valicheck = false;
    if (!valicheck) {
        scrollToFirstErrorPosition();
    }
    return valicheck; 
}

function StaffProfileValidationCheck() {
    var flag = true;
    var valicheck = true;
    flag = Register.ValidationEmptyforSelect($("#ddl_emp_salutation"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_emp_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_emp_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_emp_middlename"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_emp_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_emp_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_emp_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmptyforSelect($("#ddl_emp_title"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_emp_cellnumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationCellNumber($("#txt_emp_cellnumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_emp_email"));
    if (flag == false) valicheck = false;
    if (!valicheck) {
        scrollToFirstErrorPosition();
    }

    return valicheck;
}

function NewDeveloperValidationCheck() {
    var flag = true;
    var valicheck = true;
    
    flag = Register.ValidationEmpty($("#txt_dev_name"));
    if (flag == false) valicheck = false;
    flag = RegexValidation.ValidateNewDeveloperName($("#txt_dev_name"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_dev_shortname"));
    if (flag == false) valicheck = false;
    flag = RegexValidation.ValidateNewDeveloperShortName($("#txt_dev_shortname"));
    if (flag == false) valicheck = false;
    flag = RegexValidation.DeveloperShortNameURL($("#txt_dev_shortname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmptyforSelect($("#txt_dev_address"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_dev_email"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmail($("#txt_dev_email"));
    if (flag == false) valicheck = false;
    if (!valicheck) {
        scrollToFirstErrorPosition();
    }
    return valicheck;
}
function EditEmployeeCollaboratorUpdateValidationCheck() {
    var flag = true;
    var valicheck = true;
    flag = Register.ValidationEmptyforSelect($("#ddl_emp_salutation"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_emp_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_emp_firstname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_emp_middlename"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_emp_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_emp_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationOnlyforNumber($("#txt_emp_lastname"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_emp_cellnumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationCellNumber($("#txt_emp_cellnumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationEmpty($("#txt_emp_email"));
    if (flag == false) valicheck = false;
    if (flag == false) valicheck = false;
    flag = Register.ValidationCellNumber($("#txt_emp_tellnumber"));
    if (flag == false) valicheck = false;
    flag = Register.ValidationCellNumber($("#txt_emp_fax"));

    if ($("#txt_emp_company").length) flag = Register.ValidationEmpty($("#txt_emp_company"));
    if (flag == false) valicheck = false;

    if (!valicheck) {
        scrollToFirstErrorPosition();
    }

    return valicheck;
}
function scrollToFirstErrorPosition() {
    var p = $(".p_errorMsg:visible:eq(0)");
    if (p.length > 0) {

        toPos = p.offset().top;

        if (toPos > 0);
        {
            if (location != parent.location) {
                if (parent.DoScroll) {
                    parent.DoScroll(toPos - 50);
                }
            }
        }
    }
}
