
function LoginWindow( manager ) {
	this.manager = manager;
	this.is_loading = false;
	
	LoginWindow.prototype.showLoginWindow = function( is_error ) {
		var div = document.createElement('div');
		div.className = 'window_content';
		div.setAttribute('class','window_content');
		div.style.width = '250px';
		
		if ( is_error ) {
			var span = document.createElement('span');
			span.style.color = 'red';
			span.appendChild(document.createTextNode('Error: username and/or password incorrect.'));
			div.appendChild(span);
			this.insertLineBreaks(div,2);
		}
		
		div.appendChild(document.createTextNode('You must be logged in to access this content.'));
		this.insertLineBreaks(div,2);
		
		var username = document.createElement('input');
		username.setAttribute('type','text');
		var password = document.createElement('input');
		password.setAttribute('type','password');
		
		div.appendChild(document.createTextNode('Username'));
		this.insertLineBreaks(div,1);
		div.appendChild(username);
		this.insertLineBreaks(div,1);
		div.appendChild(document.createTextNode('Password'));
		this.insertLineBreaks(div,1);
		div.appendChild(password);
		this.insertLineBreaks(div,1);
		
		var submit = document.createElement('input');
		submit.setAttribute('type','button');
		submit.setAttribute('value','log in');
		
		div.appendChild(submit);
		
		var close_window = this.manager.makeCloseWindow(this.manager.openWindow(div,'login required',null),null);
		
		var n_this = this;
		submit.onclick = function() {
			close_window();
			n_this.login(username,password);
		};
		username.onkeypress = function( event ) {
			if ( !event )
				event = window.event;
			
			if ( event.keyCode == 13 )
				submit.onclick();
		};
		password.onkeypress = username.onkeypress;
	};
	
	LoginWindow.prototype.insertLineBreaks = function( elt, count ) {
		for ( var i = 0; i < count; ++i )
			elt.appendChild(document.createElement('br'));
	};
	
	LoginWindow.prototype.login = function( username_elt, password_elt ) {
		this.showLoadWindow();
		
		var username = username_elt.value;
		var password = password_elt.value;
		
		var ajax_url = '/include/xml/login.php';
		var post_data = 'username='+username+'&password='+password;
		var n_this = this;
		var success_fn = function( responseXML, responseText ) {
			var stati = responseXML.getElementsByTagName('status');
			n_this.stopLoad();
			
			if ( stati[0].getAttribute('success') != 'T' )
				n_this.showLoginWindow(true);
			else
				n_this.showConfirmWindow();
		};
		
		var ajax_request = new ajax(ajax_url,success_fn,null,post_data);
		ajax_request.connect();
	};
	
	LoginWindow.prototype.showLoadWindow = function() {
		var div = document.createElement('div');
		div.setAttribute('class','window_content');
		div.className = 'window_content';
		var span = document.createElement('span');
		div.style.width = '250px';
		div.appendChild(document.createTextNode('Loading intersections ('));
		span.appendChild(document.createTextNode('0.0'));
		div.appendChild(span);
		div.appendChild(document.createTextNode('s)'));
		
		var n_this = this;
		this.is_loading = true;
		
		var date = new Date();
		var close_window = this.manager.makeCloseWindow(this.manager.openWindow(div,'loading',null),null);
		setTimeout(function(){n_this.loadTimer(span,date,close_window);},100);
	};
	
	LoginWindow.prototype.stopLoad = function() {
		this.is_loading = false;
	};
	
	LoginWindow.prototype.loadTimer = function( span, date, close_window ) {
		if ( !this.is_loading ) {
			close_window();
			return;
		}
		
		var n_date = new Date();
		var elapsed = n_date.valueOf() - date.valueOf();
		
		span.removeChild(span.firstChild);
		span.appendChild(document.createTextNode(round(elapsed/1000,1)));
		
		var n_this = this;
		setTimeout(function(){n_this.loadTimer(span,date,close_window);},100);
	};
	
	LoginWindow.prototype.showConfirmWindow = function() {
		var div = document.createElement('div');
		div.setAttribute('class','window_content');
		div.className = 'window_content';
		div.style.width = '250px';
		
		div.appendChild(document.createTextNode('You have successfully logged in.'));
		var ok = document.createElement('input');
		ok.setAttribute('type','button');
		ok.setAttribute('value','ok');
		
		var center = document.createElement('center');
		center.appendChild(ok);
		div.appendChild(center);
		
		var close_window = this.manager.makeCloseWindow(this.manager.openWindow(div,'login successful',null),null);
		ok.onclick = function(){close_window()};
		ok.focus();
	};
}

