// Bind function.
Function.prototype.bind = function(obj) {
  var method = this,
   temp = function() {
    return method.apply(obj, arguments);
   };
 
  return temp;
};
 

if(!console) {
	var console = {
		debug: function(whatwhat) {
		}
	}
};

var Mhm = {
	
};

Mhm.User = function(onReady) {
	var that = this;
	$.getJSON("/user/get/format/json", function(response) {
		that.user = response.user;
		onReady();		
	});
		
};

Mhm.ModalOptions = {
		'background-color': '#000000',
		opacity: 0.3
	}

Mhm.User.prototype = {
		
	get: function() {
		return this.user;
	},
	
	
	update: function(onReady) {
		
		var that = this;
		$.getJSON("/user/get/format/json", function(response) {
			
			if(response.user.type >= 3 && that.user.type < 3) {
				// login
				$(document).trigger('mhm:login')
			} else if(response.user.type < 3 && that.user.type >= 3) {
				// logout
				$(document).trigger('mhm:logout');
			}
			
			that.user = response.user;
			onReady();		
		});
		
	}
	
	
};


Mhm.Widget = { };


Mhm.Widget.User = function(container) {
	
	this.container = $(container);
	
	  	
};

Mhm.Widget.User.prototype = {
				
	render: function()
	{
		this.draw();		
	},
	
	
	draw: function() {
		
		var user = App.User.get();	
						
		switch(user.type.toString()) {
			
			case '0':
			var txt = '<strong>Keksitön käyttäjä</strong>, salli keksi tai lataa sivu uudestaan.</a>';
			this.container.html(txt);
			break;
			
			case '1':
		
			var callsign;
			if(user.nick) {
				callsign = user.nick;
			} else if(user.firstname) {
				callsign = user.nick;
			}
			
			if(callsign) {
				var txt = 'Hei, <strong>' + callsign + '</strong>! <form id="quickLogin"><input type="hidden" name="email" value="' + user.email + '" /><input type="text" name="password" /><button type="submit">Sisään</button></form><a href="/logout/clear">En ole ' + callsign + '</a>';
			} else {
				var txt = 'Tervehdys, <strong>tuntematon</strong>. <a href="/register">Haluan rekisteröityä.</a> | <a href="/login">Minulla on jo tunnus.</a>';
			}
			this.container.html(txt);
			
			if(callsign) {
				
				$("#quickLogin").submit(this.doLogin.bind(this));
			}
			
							
			break;
			
			case '2':
			var callsign;
			if(user.nick) {
				callsign = user.nick;
			} else if(user.firstname) {
				callsign = user.firstname;
			}
			var txt = 'Hei, <strong>' + callsign + '</strong>! <form id="quickLogin"><input type="hidden" name="email" value="' + user.email + '" /><input type="password" name="password" /><button type="submit">Sisään</button></form><a href="/logout/clear">En ole ' + callsign + '</a>';
			this.container.html(txt);
			$("#quickLogin").submit(this.doLogin.bind(this));		
			break;
			
			default:
			var callsign;			
			if(user.nick) {
				callsign = user.nick;
			} else {
				callsign = user.firstname;
			}
			var txt = 'Hei, <strong>' + callsign + '</strong>! <a href="/user/edit">Omat tiedot</a> | <a href="/logout">Kirjaudu ulos</a>';
			this.container.html(txt);
			break;
		}
				
			
		
	},
	
	
	doLogin: function() {
		
		var that = this;
		
		 $.ajax({
            type: "POST",
            url: "/login/handle/format/json",
            data: $('#quickLogin').serialize(),
            dataType: 'json',
            success: function(msg){
				App.User.update(function() {
					App.userWidget.render();
				});
            }
        });
		
		
		return false;

		
	}
	
	
	
		
};















var App = { };

//Dont wanna cache 'em ajax calls, friend.
$.ajaxSetup( { cache: false } ); 

$(document).ready(function()
{
	if($.browser.msie) {
				
		if($.browser.version.substr(0, 1) <= 6) {
			$('#columnSidebar + #columnMain').css('margin-right', '21em');
			$('#columnSidebarSecondary + #columnMain').css('margin-left', '21em');
			$('#columnSidebar + #columnSidebarSecondary + #columnMain').css('margin-right', '21em');
			$('.boxSplit > div').css( { 'position': 'relative', 'float': 'left', 'left': '100%' } );			
			$('.boxSplitTwo > div').css( { 'margin-left': '-100%', 'width': '50%' } );
			$('.boxSplitTwo > div + div').css( { 'margin-left': '-50%' } );
			$('.padded :first-child').css('margin-top', '0');			
		}
		
	}
	
	App.userWidget = new Mhm.Widget.User('#login');

	App.User = new Mhm.User( function() {
		App.userWidget.render();
		
		if(App.User.get().type >= 3) {
			$('.onLoginHide').hide();
			$('.onLoginShow').show();
		} else {
			$('.onLogoutHide').hide();
			$('.onLogoutShow').show();
		}
		
		
	});
	
 $("#laddar").ajaxSend(function(evt, request, settings) {
	   $(this).css('top', $(document).scrollTop() + 15);
	   $(this).show();
 }).ajaxComplete(function() {
		$(this).hide();
	});
	
	
$("#message").ajaxError(function(evt, response)
{
	if(response.status == 401) {
		$('#message').html(
			'Ei, ei, ystäväni.<br /><br />Tämä toiminto edellyttää rekisteröitymistä tai sisäänkirjautumista. Liity siis puolueeseen tai kirjaudu sisään, ja yritä uudelleen.'
		).dialog('open');
		return;
	}

});

	
	
	
	$('#message').dialog({ autoOpen: false, modal: true, overlay: Mhm.ModalOptions });
	
	
	$.listen('click', 'a.dialog', function() {
		
		$($(this).attr('href')).dialog('open');
		
		return false;
	
	});
	
	// login
	$(document).bind('mhm:login', function(event) {
		$('.onLoginHide').hide();
		$('.onLoginShow').show();
	});
	
	// logout
	$(document).bind('mhm:logout', function(event) {
		$('.onLogoutHide').hide();
		$('.onLogoutShow').show();
	});
	
	
	$('table.zebra tr').filter(':odd').addClass('alternate');
	
						
});


