var PANELCOOKIE = '_crimsonlist_ui_panel-view';
var MAXKARMA = 6;

var _cl = null;

var current_view = null;
var current_user = 0;


/**
 * 
 * @param user	int
 * @param view	String
 * @param data	Array	key:value
 * @return
 */
function panelView (user, view, data) {
	current_user = user;
	var refresh = false;
	
	$panel = $("div#sidebar");
	
	if (! current_user) $.cookie(PANELCOOKIE, 'default');
	if (view == "set") view = _setview();
	else if (view == "refresh") { view = _setview(); refresh = true; }
	
	if (view != current_view || refresh) {
		$panel.empty().append($('<img src="'+assets('css/images/ajax-loader.gif')+'" alt="loading..." />').css({
		'margin':'auto','display':'block','position':'absolute','top':0,'bottom':0,'left':0,'right':0,'height':'30px','width':'200px'
		}));
		switch(view) {
		case 'default':
			$panel.empty().append($(defaultView()));
			loginFormSubmit();
			registerFormLink();
			$('#newpassword').click(function(){
				Confirm('No problem. Just enter your email below.<br /><input type="email" id="new-pass-email" />', 
					function(){
						var email = $('#new-pass-email').val();
						if (is_empty(email)) { return; }
						else {
							$.post(siteurl('home/newpassword'),{_nocsrf: nocsrf(), email: email}, function (m) {
								if (m == 'no member') {
									Alert("Sorry, there's no Crimsonlist user at that email address.");
								}
								else if (m == 'password sent') {
									Alert("You're all set! Check your email for a new password. You'll be able to change it the next time you log in.");
								}
							}, 'json');
						}
				},'Send new password', 'Cancel');
			})
			break;
		case 'user_panel':
			var html = userView(); html = $(html);
			html.find("#karmabar").append(fracBox((_cl.user.karma)/MAXKARMA, 100, 15));
			$panel.empty().append(html);
			
			$(".remove-post").click(function() {
				var ih = this.getAttribute('item');
				Confirm("Are you sure you want to remove this post?", function() {
					$.post(siteurl('home/removepost'), {_nocsrf: nocsrf(), item_hash: ih }, function(msg) { panel_refresh(); });
					Confirm("Did you sell this item through Crimsonlist?", function() {
						$.post(siteurl('home/soldhere'),{_nocsrf: nocsrf(), uid: _inList()});
					}, "Yes", "No");
				});
			});
			
			$(".message-reply").click(function() {
				var index = this.getAttribute('index')
				$.post(siteurl('home/markread'),{_nocsrf: nocsrf(), update: {uid_to: _inList(), message_id: _cl.messages[index].message_id }});
				Confirm('<div><i>'+_cl.messages[index].content+'</i></div><label id="charcount"></label><textarea cols="35" id="send-msg-reply"></textarea><br />', 
						function(){
					var msg = $("#send-msg-reply").val();
					var mail = { uid_from: _inList(), item_hash: _cl.messages[index].item_hash, content: msg };
					$.post(siteurl('home/messagereply'), {_nocsrf: nocsrf(), message: mail}, function() { Alert("Your reply has been sent."); });
				}, 'Send Reply', 'Close');
				$("#send-msg-reply").keyup(function() { limitChars(this,100,'#charcount'); });
			});
			
			$(".remove-message").click(function(e) {
				var msg = this.getAttribute('message');
				Confirm("Are you sure you want to remove this message? (no take-backs)", function() {
					$.post(siteurl('home/removemessage'), {_nocsrf: nocsrf(), message_id: msg }, function(r) { panel_refresh(); });
				});
			});
			
			$("#logout").click(function() {
				$.ajax({ async: false, url:siteurl('home/logout'), success: function() { panelView (0,'default'); _cl = null; }});
			});
			break;
		}
		current_view = view;
		$.cookie(PANELCOOKIE, current_view);
		if ($.cookie(BROWSECOOKIE) && $.cookie(MODECOOKIE)=='browse') _browse($.cookie(BROWSECOOKIE));
	}
}

function panel_refresh() { panelView (_inList(), 'refresh'); }

function _setview() { 
	var cookie = $.cookie(PANELCOOKIE), user = _inList();
	return is_undef(cookie)
		? ( user ? 'user_panel' : 'default' )
		: ( (user && cookie!='default') ? cookie 
				: ( !user ? 'default' : 'user_panel') )
		; 
}

function defaultView () {

	return '<form id="auth" method="post">'+
		'<label for="email">email</label><input id="email" type="email" name="email" placeholder="...harvard.edu" />'+
		'<label for="pass">password</label><input id="password" type="password" name="password" autocomplete="off" />'+
		'<input type="submit" value="log in" />'+
		'<a id="register">register</a> <a id="newpassword">forgot it?</a>'+
	'</form>'+
	'<img id="buyselllist" src="'+assets('css/images/buyselllist.jpg')+'" width="195" height="255" alt="logo" />'
	;

}

function userView () {
	_cl = getUser(current_user);

	var userview = '<div id="user_panel">'+
	'<div class="meta" id="user-name"><span>'+_cl.user.name+'</span></div>'+
	'<div class="meta" id="user-karma"><label>karma: '+(round((_cl.user.karma)/MAXKARMA,2)*100)+' %</label><div id="karmabar"></div></div>'+
	'</div>'+
	
	'<div id="items4sale"><div class="legend">Items 4 Sale</div>'+
	'<div class="rowhead"><span class="td1">item</span><span class="td2">views</span><span class="td3">fl</span><span class="td4"></span></div>';
	for (i in _cl.items) {
		userview += '<div class="row"><span item="'+_cl.items[i].item_hash+'" class="td1 edit-post">'+_cl.items[i].title+'</span><span class="td2">'+_cl.items[i].views+'</span><span class="td3">'+_cl.items[i].flags+'</span><span class="td4"><img class="remove-post" item="'+_cl.items[i].item_hash+'" height="10" width="10" src="'+assets('css/images/rm-icon.png')+'" /></span></div>';
	}
	userview += '</div>'+
	
	'<div id="message-inbox"><div class="legend">Messages</div>'+
	'<div class="rowhead"><span class="td1">from</span><span class="td2">item</span><span class="td3"></span></div>';
	
	for (var i in _cl.messages) {
		var unread = (_cl.messages[i].unread==1) ? 'unread' : '';
		userview += '<div class="row '+unread+'"><span index="'+i+'" class="td1 message-reply">'+_cl.messages[i].from+'</span><span index="'+i+'" class="td2 message-reply">'+_cl.messages[i].item+'</span><span class="td3"><img class="remove-message" message="'+_cl.messages[i].message_id+'" height="10" width="10" src="'+assets('css/images/rm-icon.png')+'" /></span></div>';
	}
	userview += '</div>'+
	
	'<a id="logout">logout now</a>';
	
	return userview;
}

function loginFormSubmit() {
	$("form#auth").submit(function (e) {
		e.preventDefault();
		
		var $email = $("#email"), $password = $("#password"),
			email = $email.val(), password = $password.val();
		
		if ( is_empty(email) ) $email.css({'border-color':'#FF0000'}).blur();
		else $email.css({'border-color':'#EEE'});
		
		if ( is_empty(password) ) $password.css({'border-color':'#FF0000'}).blur();
		else $email.css({'border-color':'#EEE'});
		
		if (! (is_empty(email) || is_empty(password))) {
			var creds = {email: email, password: password};
			$.postJSON(siteurl('home/login'), { _nocsrf: nocsrf(), credentials: creds}, function(r) {
				if (r > 1) {
					panelView (_inList(), 'user_panel', null);
				}
				else if (r == 1) {
					panelView (_inList(), 'user_panel', null);
					Confirm(
					'Want to change your password? Enter the new password twice: <br />'+
					'<input type="password" id="chpwd" placeholder="new password..." />'+
					'<input type="password" id="chpwd2" placeholder="type it again..." />',
					function() { chpwd(); }
					);
				}
				else Alert("Incorrect username/password combination. Please try again. ");
			});
		}
	});	
}

function registerFormLink() {
	$("a#register").click(function(){
		register = new Popup();
		register.content = 
			'<form id="register-form">'+
			'<label for="name" style="display:block; color:#444; font:bold 12px sans-serif;">full name</label>'+
			'<input type="text" name="name" id="register-name" style="width:170px" />'+
			'<label for="email" style="display:block; color:#444; font:bold 12px sans-serif;">harvard email</label>'+
			'<input type="email" name="email" id="register-email" style="width:170px" />'+
			'<input type="submit" value="Sign Up" style="border:none; background:none; font-weight:bold; cursor:pointer;" />'+
			'</form>';
		register.style = {'height':'75px', 'width':'255px', 'border-color':'#880000'};
		register.show();
		$("#register-name").focus();
		
		$("#register-form").submit(function(e) {
			e.preventDefault();
			var $name = $("#register-name"), $email = $("#register-email");
			var name = $name.val(), email = $email.val();
			
			if ( is_empty(email) ) $email.css({'border-color':'#FF0000'}).blur().attr('placeholder', 'email is required...');
			else $email.css({'border-color':'#EEE'});
			
			if (! is_empty(name) && ! is_empty(email)) {	// register user with these credentials
				var credentials = {name:name, email:email};
				$.post(siteurl('home/register'), { _nocsrf: nocsrf(), credentials: credentials },
					function(result) {
						if (result=='success') {
							register.hide();
							Alert("You're now registered! Check your email for your password. " +
									"With it you'll be able to login to Crimsonlist. " +
									"Thanks for joining! Go check your email now, we'll wait...");
						}
						else if (result=="failure") {
							register.hide();
							Alert("We are unable to register you at this time. Please try again " +
									"later. Thanks.");
						}
						else if (result=="exists") {
							register.hide();
							Alert("A user already exists @ this email address. Log in instead. If you've " +
							"forgotten your password, click the 'forgot it?' link for a new one. Thanks.");
						}
						else if (result=="not harvard") {
							Alert("Sorry, you must register using a valid harvard.edu email address.");
						}
					}, 'json');
			}
		});
	});
}


