
$(document).ready(function(){

	  /* Tabs */
	  $("#tabs-1").tabs("#flowpanes > div.fulltab");
	  $("#tabs-2").tabs("#flowpanes > div.fulltab");
	    
	  /* Define cufon */
	  Cufon.replace('h2.title, h1.title, .title-top span, #profile-picture h1, .expert-2-info-block big, h2.main-title, .mainpage-title-description');
	
	popup.init();
});

var SiteCatalyst = {
	track: function(values, title){
		var s = s_gi(s_account);
		var vars = [];
		for (var n in values)
		{
			vars.push(n);
			s[n] = values[n];
		}
		if (vars.length > 0)
		{
			s.linkTrackVars = vars.join(',');
		}
		if (values.events)
		{
			s.linkTrackEvents = values.events;
		}
		s.tl(this, 'o', title);
	}
}

var poll = {
		id: 0,
		total_width: 0,
		yes_val: 0,
		no_val: 0,
		last_vote: null,
		
		init: function(id, total_width, yes_val, no_val)
		{
			poll.id = id;
			poll.total_width = total_width;
			poll.yes_val = yes_val;
			poll.no_val = no_val;
		},
		
		post: function(vote)
		{
			var onComplete = function(response)
			{
				if (response.success)
				{
					poll.yes_val = response.add.yes;
					poll.no_val = response.add.no;
					
					poll.change();
				}
				else
				{
					alert(response.error);
				}
			}
			
			poll.last_vote = vote;
			
			var params = {
				vote: vote,
				id: poll.id
			};
			
			$.post(base_url + 'ajax/poll/vote', params, onComplete, 'json');
		},
		yes: function()
		{
			poll.post(1);
		},
		no: function()
		{
			poll.post(0);
		},
		change: function()
		{
			var yes_px = Math.floor(poll.total_width * poll.yes_val / 100);
			var no_px = poll.total_width - yes_px;
			
			$('#poll-val-yes').html(poll.yes_val);
			$('#poll-val-no').html(poll.no_val);
			
			$('#poll-bar-yes').css('width', yes_px + 'px');
			$('#poll-bar-no').css('width', no_px + 'px');
			
			$('#poll-vote-result').show();
		}
}

var newsletter = {
	submit: function ()
	{
		var link = $('#newsletter-link').val();
		var email = $('#newsletter-email').val();
		
		link = link.replace('[email]', email);
		
		window.open(link, '');
	}
}

var popup = {
	isOpened: false,
	container: null,
	
	init: function ()
	{
		popup.container = $('#login-popup');
	},
	
	open: function(popupId, parameters)
	{
		if (popup.isOpened)
		{
			return;
		}
		
		var onComplete = function(response)
		{
			
			popup.isOpened = true;
			popup.setHTML(response.html);
			/* Ghost layer */
			var height = $(window).height(); 
			var width = $(window).width();
			$("#ghost-layer").css({
				"width" : width,
				"height" : height
			});
		}
		
		$.post(base_url + 'ajax/popupMarkup/' + popupId, parameters, onComplete, 'json');
	},
	
	setHTML: function (html)
	{
		popup.container.html(html)
		popup.container.show();
	},
	
	close: function ()
	{
		if (! popup.isOpened)
		{
			return;
		}
		
		$("#ghost-layer").css({
			"width" : 0,
			"height" : 0
		});
		
		popup.isOpened = false;
		popup.container.empty();
		popup.container.hide();
	}
}

var auth = {
	loginVerified: false,
	actions: [],
	
	verified: function (val)
	{
		auth.loginVerified = val;
	},
	
	proceedActions: function ()
	{
		$('#mypage-logout-links').show();
		
		auth.proceedQueue();
	},
	
	proceedQueue: function ()
	{
		if (auth.actions.length == 0)
		{
			return;
		}
				
		for (var i = 0; i< auth.actions.length; i++)
		{
			auth.actions[i]();
		}
		
		auth.actions = [];
	},
	
	addAction: function (func)
	{
		if (typeof(func) == 'function') auth.actions.push(func);
	},
	
	run: function (func)
	{
		if (! auth.loginVerified)
		{
			auth.loginPopup(func);
			return;
		}
		
		var error = func();
		if (error && error.not_logged_in)
		{
			auth.loginPopup(func);
			return;
		}
	},
	
	runQuestion: function ()
	{
		var questionheadline 	= $('#question-headline').val()
		var questiontext 		= $('#question-text').val()
		if (!questionheadline||!questiontext||questiontext==qt_input_default||qh_input_default==questionheadline)
		{
			alert(empty_header_or_text);
			return;
		}
		
		if (! auth.loginVerified)
		{
			if (question)
			{
				question.saveParams();
			}
			
			auth.loginPopup(question.submit);
			return;
		}
		
		question.submit();
	},
	
	loginPopup: function (func)
	{
		auth.addAction(func);
		popup.open('signInSignUp', { log_referer: 'userbar', log_info: location.href });
	}
}

var signin = {
	email: null,
	password: null,
	
	init: function ()
	{
		$('#sign-in-email').focus();
	
		signin.email = $('#sign-in-email');
		signin.password = $('#sign-in-password');
	},
	
	submit: function ()
	{
		var params = {
			email: 		signin.email.val(),
			password: 	signin.password.val()
		};
		
		var onComplete = function(response)
		{
			if (!response.verified)
			{
				alert(response.feedback);
			}
			else
			{
				if (! response.expert)
				{
					auth.verified(true);
				}
				else
				{
					expert.verified(true);
				}
				$('#logged_out').hide();
				$('#logged_in').show();
				auth.proceedActions();
				popup.close();
			}
		}
		
		$.post(base_url + 'ajax/auth/verifyLogin', params, onComplete, 'json');
	},
	forgotPassword: function ()
	{
		popup.close();
		popup.open('forgotPassword', {});
	},
	emailSubmit: function ()
	{
		var email = $('#forgot-password-form #forgot-email');
		var params = {
			email: email.val()
		};
		
		var onComplete = function(response)
		{
			alert(response.message);
			if (! response.error)
			{
				popup.close();
			}
		}
		
		$.post(base_url + 'ajax/auth/forgotPassword', params, onComplete, 'json');
	}
}

var signup = {
	first_name: null,
	last_name: null,
	email: null,
	password: null,
	confirm_password: null,
	
	init: function ()
	{
		signup.first_name 		= $('#sign-up-fname');
		signup.last_name 		= $('#sign-up-lname');
		signup.email 			= $('#sign-up-email');
		signup.password 		= $('#sign-up-pass');
		signup.confirm_password = $('#sign-up-passconfirm');
	},
	
	step1: function ()
	{
		var params = {
			email: 				signup.email.val(),
			password: 			signup.password.val(),
			first_name: 		signup.first_name.val(),
			last_name: 			signup.last_name.val(),
			confirm_password:	signup.confirm_password.val()
		};
		
		var onComplete = function(response)
		{
			if (! response.error)
			{
				popup.close();
				popup.open('message', { title: response.title, message: response.message }); // Replaces below line
				//popup.open('signUp2', { log_referer: 'userbar', log_info: location.href });
			}
			else
			{
				alert(response.message);
			}
		}
		
		$.post(base_url + 'ajax/auth/step2', params, onComplete, 'json'); // Replaces below line
		//$.post(base_url + 'ajax/auth/step1', params, onComplete, 'json');
	},
	
	back: function ()
	{
		popup.close();
		popup.open('signInSignUp', { log_referer: 'userbar', log_info: location.href });
	},
	
	step2: function ()
	{
		var areas = '';
		$("#areas-list :checked").each(function () {
			areas += $(this).val() + '|';
		});
		
		var params = {
			areas: areas
		};
		
		var onComplete = function(response)
		{
			if (response.error)
			{
				alert(response.message);
			}
			else
			{
				popup.close();
				popup.open('message', { title: response.title, message: response.message });
			}
		}
		
		$.post(base_url + 'ajax/auth/step2', params, onComplete, 'json');
	},
	
	finished: function ()
	{
		popup.close();
		window.location.href = base_url;
	}
}

var not_logged_in = {
	not_logged_in: true
}

var personal = {
	editing: false,
	first_name: null,
	last_name: null,
	email: null,
	email_value: '',
	password: null,
	password_inp: null,
	password_confirm_inp: null,
	passwordChanged: false,
	picture_change: null,
	
	init: function ()
	{
		personal.first_name		= $('#first_name');
		personal.last_name 		= $('#last_name');
		personal.email 			= $('#email');
		
		personal.password 				= $('#change_password');
		personal.password_inp 			= $('#password-inp');
		personal.password_confirm_inp	= $('#password_confirm_inp');
		
		personal.delete_user 			= $('#delete_user');
		
		personal.email_value	= personal.email.html().replace(' ','');
		
		personal.picture_change = $('#change');
	},

	showInputs: function ()
	{
		personal.first_name.html(personal.input('first_name', personal.first_name.html()));
		personal.last_name.html(personal.input('last_name', personal.last_name.html()));
		personal.email.html(personal.input('email', personal.email.html()));
		
		personal.password.show();
		personal.delete_user.show();
		$('#areas-list li input,#areas-list li').show();
		$('#my-page-button-rediger').css({backgroundPosition: "0 -23px"});
		$('#change').show();
	},
	
	edit: function ()
	{
		if (personal.editing)
		{
			personal.save();
		}
		else
		{
			personal.showInputs();
		}
		
		personal.editing = ! personal.editing;
	},
	
	input: function (name, value)
	{
		return '<input type="text" class="input" id="inp-' + name + '" value="' + value + '" />';
	},
	
	save: function ()
	{
		var inp_first_name = $('#inp-first_name').val();
		var inp_last_name = $('#inp-last_name').val();
		var inp_email = $('#inp-email').val().replace(' ','');
		
		var areas = '';
		$("#areas-list :checked").each(function () {
			areas += $(this).val() + '|';
		});
		
		personal.submit(inp_first_name, inp_last_name, inp_email, areas);
		
		personal.first_name.html(inp_first_name);
		personal.last_name.html(inp_last_name);
		personal.email.html(inp_email);
		
		personal.password.hide();
		personal.delete_user.hide();
		
		$('#areas-list li input,#areas-list li').hide();
		$("#areas-list :checked").each(function () 
		{
			$(this).parent().show();
		});
		$('#my-page-button-rediger').css({backgroundPosition: "0 0"});
		$('#change').hide();
	},
	
	submit: function (fn, ln, e, a)
	{
		var params = {
			areas: 				a,
			first_name: 		fn,
			last_name:			ln,
			email:				e,
			password:			'',
			password_confirm:	''
		};

		var onComplete = function(response)
		{
			if (response.message)
			{
				alert(response.message);
			}
			
		}
		
		$.post(base_url + 'ajax/auth/profile', params, onComplete, 'json');
	},
	
	passwordEdited: function (str)
	{
		if (personal.password_inp.val() != str)
		{
			personal.passwordChanged = true;
		}
	},
	
	photoChange: function(val)
	{
		if (val)
		{
			personal.picture_change.show();
		}
		else
		{
			personal.picture_change.hide();
		}
	},
	
	picture_popup: function ()
	{
		popup.open('profilePicture', {});
	},
	
	password_popup: function ()
	{
		popup.open('changePassword', {});
	},
	
	delete_popup: function ()
	{
		popup.open('deleteUser', {});
	},
	
	pictureSubmit: function ()
	{
		$('#picture-upload-form').submit();
	},
	
	passwordSubmit: function ()
	{
		var old_password 			= $('#old-pass').val();
		var new_password 			= $('#new-pass').val();
		var new_password_confirm 	= $('#new-pass-conf').val();
		
		if (! old_password)
		{
			alert(change_password_messages.empty_old_password);
			return;
		}
		
		if (! new_password)
		{
			alert(change_password_messages.empty_new_password);
			return;
		}
		
		if (new_password != new_password_confirm)
		{
			alert(change_password_messages.passwords_not_match);
			return;
		}
		
		var onComplete = function(response)
		{
			if (response.message)
			{
				alert(response.message);
				return;
			}
			else
			{
				popup.close();
				popup.open('changePasswordSuccess', {});
			}
		};
		
		var params = {
			old_password: 			old_password,
			new_password: 			new_password,
			new_password_confirm: 	new_password_confirm
		};
		
		$.post(base_url + 'ajax/auth/changepassword', params, onComplete, 'json');
	}
}

var expert = {
	loginVerified: false,
	
	verified: function (val)
	{
		expert.loginVerified = val;
		auth.verified(val);
	}
}

var searchquestion = {
	counters: null,
	more: function (id)
	{
		if (! searchquestion.counters)
		{
			searchquestion.counters = {};
		}
	
		if (! searchquestion.counters[id])
		{
			searchquestion.counters[id] = 20;
		}
		else
		{
			searchquestion.counters[id] = searchquestion.counters[id] + 10;
		}
		
		var params = {
			expertId: id,
			limit: searchquestion.counters[id]
		};
		
		var onComplete = function(response)
		{
			if (response.success)
			{
				$('#search-container-' + id).html(response.html);
			}
		}
		
		$.post(base_url + 'ajax/search', params, onComplete, 'json');
	}
}
