(function() {

        var sRedirectUrl = '';

	var LightboxLogin = window.LightboxLogin = function( loginClassName ) {
	        var aLoginLinks = Get.byClass(loginClassName, 'a');

		for(var x in aLoginLinks) {
			Events.add(aLoginLinks[x], 'click', function(e) {
                                if(/redirect/.test(this.href)) sRedirectUrl = decodeURIComponent(this.href.substr(this.href.search(/redirect/) + 'redirect='.length));

				window.scroll(0,0);
				loadLogin();
				e.preventDefault();
			});
		}
	}

        var oBody = {}, oLoginBg = {}, oLoginCancel = {}, oLoginCheckbox = {}, oLoginForm = {}, oLoginSubmit = {}, oWrapLogin = {};
        var bAutoLogin = false;

	function getPageSize() {
                var xScroll, yScroll;

                if (window.innerHeight && window.scrollMaxY) {
                        xScroll = window.innerWidth + window.scrollMaxX;
                        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
                        if(document.documentElement.clientWidth){
                                windowWidth = document.documentElement.clientWidth;
                        } else {
                                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 = xScroll;
                } else {
                        pageWidth = windowWidth;
                }

                return [pageWidth,pageHeight];
        };


        function loadLogin() {
                oWrapLogin = document.createElement('div');
                oWrapLogin.setAttribute('id', 'wrapLogin');
		oWrapLogin.className = 'reset';
                oWrapLogin.innerHTML = (
                        '<div id="loginBackground"></div>' +
                        '<div id="loginBox">' +
				'<div id="loginHeader">' +
					'<h2>My BobVila.com Login</h2>' +
					'<a id="loginCancel" href="/">Close</a>' +
				'</div>' +
				'<div id="loginBody" class="clearFix">' +
					'<form id="loginForm" method="post">' +
						'<h3>Already have an account? Login here.</h3>' +
						'<div id="loginFields">' +
							'<div class="wrapTextField"><label for="loginUsername">Username</label><div><input type="text" name="session_login" id="loginUsername" /></div></div>' +
							'<div class="wrapTextField"><label for="loginPassword">Password</label><div><input type="password" name="session_password" id="loginPassword" /></div></div>' +
						'</div>' +
						'<div id="loginButton">' +
							'<input type="submit" name="loginSubmit" id="loginSubmit" value="Login" />' +
						'</div>' +
						'<div id="loginMessage"></div>' +
						'<div id="loginCheckbox">' +
							'<a id="checkboxLink" class="unchecked" href="#Toggle_Auto_Login">Login Automatically</a>' +
							'<p>Log me in automatically<br /><span>(not recommended for public computers)</span></p>' +
						'</div>' +
					'</form>' +
                                        '<div id="loginLinks">' +
                                                '<a href="/My/">Register</a>&nbsp;|&nbsp;<a href="/My/?action=login">Need help login in?</a>' +
                                        '</div>' +
				'</div>' +
				'<div id="graphicLoginBoxBottom"></div>' +
                        '</div>'
                );

                oBody = Get.byTag('body')[0];
                oBody.insertBefore(oWrapLogin, oBody.firstChild);

                // Set background dimensions
                var aPageSize = getPageSize();
                var nHeight = aPageSize[1];
                var nWidth = aPageSize[0];

                oWrapLogin.style.height = nHeight+"px";

                oLoginCancel = Get.byId('loginCancel');
                oLoginCheckbox = Get.byId('checkboxLink'); 
                oLoginForm = Get.byId('loginForm');
                oLoginMessage = Get.byId('loginMessage');
                oLoginPassword = Get.byId('loginPassword');
                oLoginSubmit = Get.byId('loginSubmit');
                oLoginUsername = Get.byId('loginUsername');

		Events.add(oLoginCancel, 'click', function(e) {
			cancelLogin();
			e.preventDefault();
		});

		Events.add(oLoginCheckbox, 'click', function(e) {
			if(bAutoLogin) {
                                oLoginCheckbox.className = 'unchecked';
                                bAutoLogin = false;
                        } else {
                                oLoginCheckbox.className = 'checked';
                                bAutoLogin = true;
                        }
			e.preventDefault();
		});

		Events.add(oLoginSubmit, 'click', function(e) {
			var sUser = oLoginUsername;
                        var sPass = oLoginPassword;
                        var sData = 'remote=1&session_login=' + oLoginUsername.value + '&session_password=' + oLoginPassword.value + '&automaticlogin=' + ((bAutoLogin) ? 1 : -1);
                        oLoginMessage.innerHTML = '<p class="processingMessage">Processing...</p>';

                        Xhr({ method: 'POST', url: '/includes/Site/Site_Functions.php', data: sData, onSuccess: loginResponse });
			e.preventDefault();
		});

		Events.add(oLoginForm, 'click', function(e) { e.preventDefault(); });
        };

        function cancelLogin() {
                oBody.removeChild(oWrapLogin);
        };

        function loginResponse( data ) {
                if(parseInt(data)) {
                        if(sRedirectUrl.length > 0) {
                                window.location.href = sRedirectUrl;
                        } else {
                                window.location.reload();
                        }
		} else {
                        oLoginMessage.innerHTML = '<p class="errorMessage">The username or password you entered is not valid. Please try re-entering your login information.</p>';
                }
        };

})();


