if (!sb_claimModal) { var sb_claimModal = new Object(); };

sb_claimModal.objects = {
	phoneReg: /^\(?[2-9]\d{2}[\)\.-]?\s?\d{3}[\s\.-]?\d{4}$/,
	emailReg: /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,
	overlay: null,
	modalDiv: null
};

sb_claimModal.system = {
	init: function() {
		if (!document.getElementById) return false;
		var anchors = document.getElementsByTagName('a');
		var foundOne = false;
		for (var i=0; i<anchors.length; i++) {
			if (anchors[i].getAttribute('rel') === 'claimform') {
				anchors[i].onclick = function() {
					sb_claimModal.system.showClaimModal();
					return false;
				};
				foundOne = true;
			};
		};
		if (foundOne) {
			sb_claimModal.system.createLayout();
			sb_claimModal.tools.addEvent(document, 'keypress', function(e) {
				if (e.keyCode == 27) {
					sb_claimModal.system.hideClaimModal();
				};
			});
		};
	},

	createLayout: function() {
		// overlay div
		sb_claimModal.objects.overlay = document.createElement('div');
		sb_claimModal.objects.overlay.id = 'tOverlay';
		sb_claimModal.objects.overlay.style.display = 'none';
		sb_claimModal.objects.overlay.onclick = function() {
			sb_claimModal.system.hideClaimModal();
		};
		// modal div
		sb_claimModal.objects.modalDiv = document.createElement('div');
		sb_claimModal.objects.modalDiv.id = 'tModal';
		// content div
		var contentDiv = document.createElement('div');
		contentDiv.id = 'tModalContent';
		contentDiv.innerHTML = '\
			<div style="padding: 10px;">\
				<h4>Register for a $DisplayName account</h4>\
				<p>Please enter your information to register for a $DisplayName account. Once we receive your\
					information we will contact you with more details so you can claim your business listing.</p>\
				<form action="/BL/ClaimRequest.aspx" method="post" onsubmit="return sb_claimModal.system.validateForm()">\
					<p style="margin: 6px 0; padding-left: 50px;">\
						<label for="name">Name</label><br/>\
						<input type="text" size="25" id="name" name="name"/>\
					</p>\
					<p style="margin: 6px 0; padding-left: 50px;">\
						<label for="businessname">Business Name</label><br />\
						<input type="text" name="businessname" id="businessname" size="25" />\
					</p>\
					<p style="margin: 6px 0; padding-left: 50px;">\
						<label for="phone">Phone number</label><br/>\
						<input type="text" size="25" id="phone" name="phone"/><br/>\
						<span style="font-size: 9px; color: gray;">ex: (888) 321-1234</span>\
					</p>\
					<p style="margin: 6px 0; padding-left: 50px;">\
						<label for="EmailFromAddress">E-mail address</label><br/>\
						<input type="text" size="25" id="EmailFromAddress" name="EmailFromAddress"/>\
					</p>\
					<p style="margin: 6px 0; text-align: center;">\
						<input type="submit" id="tSubmitAgree" value="Submit"/>\
					</p>\
				</form>\
			</div>\
		';
		sb_claimModal.objects.modalDiv.appendChild(contentDiv);
		// close button
		var closeButton = document.createElement('img');
		closeButton.id = 'tModalClose';
		closeButton.src = '../content/i/close2.gif';
		var closeAnchor = document.createElement('a');
		closeAnchor.setAttribute('rel', 'notrack');
		closeAnchor.href = 'javascript:sb_claimModal.system.hideClaimModal();';
		closeAnchor.appendChild(closeButton);
		sb_claimModal.objects.modalDiv.appendChild(closeAnchor);
		// insert the new elements into the page
		var body = document.getElementsByTagName('body')[0];
		body.insertBefore(sb_claimModal.objects.overlay, body.firstChild);
		body.insertBefore(sb_claimModal.objects.modalDiv, sb_claimModal.objects.overlay.nextSibling);
	},

	showClaimModal: function() {
		var arrayPageSize = sb_claimModal.tools.getPageSize();
		var arrayPageScroll = sb_claimModal.tools.getPageScroll();
		sb_claimModal.objects.overlay.style.height = (arrayPageSize[1] + 'px');
		sb_claimModal.objects.overlay.style.display = 'block';
		modalLeft = ((arrayPageSize[0] - 300) / 2);
		modalTop = (arrayPageScroll[1] + ((arrayPageSize[3] - 325) / 2) - 40);
		sb_claimModal.objects.modalDiv.style.top = (modalTop < 0) ? '0px' : modalTop + 'px';
		sb_claimModal.objects.modalDiv.style.left = (modalLeft < 0) ? '0px' : modalLeft + 'px';
		sb_claimModal.objects.modalDiv.style.width = '300px';
		//sb_claimModal.objects.modalDiv.style.height = '325px';
		sb_claimModal.objects.modalDiv.style.display = 'block';
		document.getElementById('name').focus();
	},

	hideClaimModal: function() {
		sb_claimModal.objects.overlay.style.display = 'none';
		sb_claimModal.objects.modalDiv.style.display = 'none';
	},

	validateForm: function() {
		var name = document.getElementById('name');
		var phone = document.getElementById('phone');
		var emailAddress = document.getElementById('EmailFromAddress');
		//var termsBox = document.getElementById('agreesToTerms');
		if (name.value === '') {
			alert('Please enter your name.');
			name.focus();
			return false;
		} else if (phone.value === '') {
			alert('Please enter your phone number.');
			phone.focus();
			return false;
		} else if (!sb_claimModal.objects.phoneReg.test(phone.value)) {
			alert('Invalid phone number, please check the phone number and try again.');
			phone.select();
			phone.focus();
			return false;
		} else if (emailAddress.value === '') {
			alert('Please enter your email address.');
			emailAddress.focus();
			return false;
		} else if (!sb_claimModal.objects.emailReg.test(emailAddress.value)) {
			alert('Invalid email address, please check the address and try again.');
			emailAddress.select();
			emailAddress.focus();
			return false;
		};
		//if (termsBox.checked === false) {
		//	alert('You must accept the Terms of Use to submit a request.');
		//	termsBox.focus();
		//	return false;
		//};
	}
};

sb_claimModal.tools = {
	getPageScroll: function() {
		var yScroll;
		if (self.pageYOffset) {
			yScroll = self.pageYOffset;
		} else if (document.documentElement && document.documentElement.scrollTop) {
			// Explorer 6 Strict
			yScroll = document.documentElement.scrollTop;
		} else if (document.body) {
			// all other Explorers
			yScroll = document.body.scrollTop;
		};
		return new Array('', yScroll);
	},

	getPageSize: function() {
		var xScroll, yScroll;
		if (window.innerHeight && window.scrollMaxY) {
			xScroll = document.body.scrollWidth;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight) {
			// all but Explorer Mac
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else {
			// Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		};
		var windowWidth, windowHeight;
		if (self.innerHeight) {
			// all except Explorer
			windowWidth = self.innerWidth;
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) {
			// Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) {
			// other Explorers
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		};
		// for small pages with total height less then height of the viewport
		if (yScroll < windowHeight) {
			pageHeight = windowHeight;
		} else {
			pageHeight = yScroll;
		};
		// for small pages with total width less then width of the viewport
		if (xScroll < windowWidth) {
			pageWidth = windowWidth;
		} else {
			pageWidth = xScroll;
		};
		return new Array(pageWidth, pageHeight, windowWidth, windowHeight);
	},

	addEvent: function(obj, evType, fn, useCapture) {
		if (obj.addEventListener) {
			obj.addEventListener(evType, fn, useCapture);
			return true;
		} else if (obj.attachEvent) {
			var r = obj.attachEvent('on' + evType, fn);
			return r;
		} else {
			obj['on' + evType] = fn;
		};
	}
};

sb_claimModal.tools.addEvent(window, 'load', sb_claimModal.system.init);