var load = false;
var user = 8473, person = 8600, uri = '/', curtab = '';
var tabs = ["projects","recommendations","info","invites","stat","offline","files"];
var tabsData = {"projects":{"label":"\u041f\u043e\u0440\u0442\u0444\u043e\u043b\u0438\u043e","href":1,"js":1,"owner":0,"auth":0},"recommendations":{"label":"\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438","href":1,"js":1,"owner":0,"auth":0},"info":{"label":"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f","href":1,"js":1,"owner":0,"auth":0},"invites":"tabInvites","stat":"tabStat","offline":"tabOffline","files":"tabFiles"};

$(document).ready(function() {
	$.ajaxSetup({
		type:       'post',
		url:        '/ajax/user.profile.ajax.php',
		cache:      false,
		timeout:    tout,
		beforeSend: function() {
			$('#run').show();
		},
		complete:   function() {
			$('#run').hide();
		},
		error: function(xhr, status) {
			if (status == 'timeout') {
				alert(errTimeout);
			}
		}
	});
	if ($('#user').length && $('#login').length) {
		user = parseInt($('#user').val());
		person = parseInt($('#person').val());
		uri = 'http://' + $('#host').val();
	}
	curtab = $('#tab').val();
	var tab = curtab;
	key = unescape(location.hash.substr(1)).split('&');
	if (key[0].length && $.inArray(key[0], tabs) >= 0) {
		tab = key[0];
		if (tab == 'invites') { if (key.length > 1 && $.inArray(key[1], subsInvites)) { invtab = key[1]; } else { invtab = 'email'; } }
		if (tab == 'stat') { if (key.length > 1 && $.inArray(key[1], subsStat)) { stattab = key[1]; } else { stattab = 'week'; } }
	}
	key = document.location.href.replace(/#[a-z0-9=&]+/i, '');
	key = key + '#' + tab;
	if (tab == 'invites') {
		if (!invtab) { invtab = 'email'; }
		key += '&' + invtab;
	}
	if (tab == 'stat') {
		if (!stattab) { stattab = 'week'; }
		key += '&' + stattab;
	}
	document.location.href = key;
	$.historyInit(pageload, uri);
	load = true;
	chkTabs();
	VK.init({
		apiId: 1899807,
		nameTransportPath: '/xd_receiver.html'
	});

	mailru.loader.require('api', function() {
		mailru.connect.init(531448, 'f3826295be2f90ce29900ebdd1e62fbc');

		mailru.events.listen(mailru.connect.events.login, function(session) {
			accessContactMM();
		});
	});

	if ($('[id^="access-contact"]').length) {
		$('#access-contact-login').focus(function() {
			if ($(this).val() == 'Логин') {
				$(this).val('');
			}
		});
		$('#access-contact-login').blur(function() {
			if (!$(this).val().length) {
				$(this).val('Логин');
			}
		});
		$('#access-contact-password').focus(function() {
			if ($(this).val() == 'Пароль') {
				$(this).val('');
			}
		});
		$('#access-contact-password').blur(function() {
			if (!$(this).val().length) {
				$(this).val('Пароль');
			}
		});
	}
	$('#run').hide();
});

function pageload(hash) {
	key = hash.split('&');
	hash = key[0];
	var s = '';
	if (key.length > 1) { s = key[1]; }
	if (hash) {
		$.each(tabs, function() {
			if (this == hash && (this != curtab || this == 'invites' || this == 'stat')) {
				if (!s.length) {
					if (this == 'invites') { s = 'email'; }
					if (this == 'stat') { s = 'week'; }
				}
				reqGetContent(this.toString(), s);
			}
		});
	} else if (load) {
		history.back();
	}
}

function reqTab(tab) {
	var hash = tab;
	if (tab == 'invites') { hash += '&email'; }
	else if (tab == 'stat') { hash += '&week'; }
	key = document.location.href.replace(/#[a-z0-9=&]+/i, '');
	document.location.href = key + '#' + hash;
	$.historyLoad(hash);
	return;
}

function reqGetContent(tab, sub) {
	$('#tab-' + curtab).removeClass('active');

	if ($.inArray(curtab, tabs) > 0) { var s = curtab + '/'; } else { var s = ''; }
	var html = ['<a href="'];
	if (tabsData[curtab].href) {
		html.push(uri + s);
	} else {
		html.push('#' + curtab);
	}
	html.push('" onclick="pageTracker._trackPageview(\'/ajaxevents/tab' + curtab + '/\');');
	if (tabsData[curtab].js) {
		html.push('reqTab(\'' + curtab + '\');');
	}
	html.push('return false" title="' + tabsData[curtab].label + '">' + tabsData[curtab].label + '</a>');
	$('#tab-' + curtab).html(html.join(''));

	curtab = tab;
	$('#tab-' + curtab).addClass('active');
	$('#tab-' + curtab).html(tabsData[curtab].label + '<div class="coner"></div>');
	var postData = ['act=tab', 'user=' + user, 'person=' + person, 'tab=' + curtab];
	$.ajax({
		data: postData.join('&'),
		dataType: 'html',
		success: function(html) {
			$('#tabContent').html(html);
			chkTabs();
			if (sub) {
				if (curtab == 'invites') {
					reqGetInvitesSubContent(sub, true);
				} else if (curtab == 'stat') {
					reqGetStatSubContent(sub);
				}
			}
		}
	});
	return;
}

function chkTabs() {
	if (curtab == 'projects') {
		$.each($('ul[id^="prjMenu"] li'), function(){
			$(this).mouseover(function(){ $(this).addClass('sfhover'); });
			$(this).mouseout(function(){ $(this).removeClass('sfhover'); });
		});
		$('#lnkProjectForm').toggle(
			function() {
				$('#frmProject').removeClass('invis');
				$('dt[id^="err"]').hide();
				$('#fPrjName').focus();
			},
			function() {
				$('#frmProject').addClass('invis');
			}
		);
	} else if (curtab == 'recommendations') {
		chkRecTypes(true);
		chkRecDivsFirst();
		if ($('#fRecText').length && user && person) {
			$('#fRecText').keypress(function(e){
				var code = (e.charCode) ? e.charCode : ((e.keyCode) ? e.keyCode : ((e.which) ? e.which : 0));
				if (code == 13 && e.ctrlKey) {
					$('#recButton').click();
				}
			});
			if ($('#fRecText').length) {
				$('#fRecText').focus();
			}
		}
	} else if (curtab == 'offline') {
		$('#divOffline').hide();
		$.each($('input[id^="project"]'), function() { $(this).check() });
	} else if (curtab == 'info') {
		if ($('[id^="access-contact"]').length) {
			$('#access-contact-login').focus(function() {
				if ($(this).val() == 'Логин') {
					$(this).val('');
				}
			});
			$('#access-contact-login').blur(function() {
				if (!$(this).val().length) {
					$(this).val('Логин');
				}
			});
			$('#access-contact-password').focus(function() {
				if ($(this).val() == 'Пароль') {
					$(this).val('');
				}
			});
			$('#access-contact-password').blur(function() {
				if (!$(this).val().length) {
					$(this).val('Пароль');
				}
			});
		}
	}
	return;
}

var recTypes = new Object();
function chkRecTypes(isImport) {
	if (isImport && $('#fRecTypes').length) {
		recTypes = eval("(" + $('#fRecTypes').val() + ")");
	}
	for (key in recTypes) { if (recTypes[key] == 0) { $('#t' + key).hide(); } }
	return;
}

function chkRecDivsFirst() {
	var divs = ["employer","virtuzor","agent","admin","vendor"];
	for (key in divs) {
		if ($('div[id^="recDiv_' + divs[key] + '"]').length) {
			$('div[id^="recDiv_' + divs[key] + '"]').removeClass('first');
			$('div[id^="recDiv_' + divs[key] + '"]:first').addClass('first');
		}
	}
	return;
}

var errs = {"errRecTextEmpty":"\u0412\u044b \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043b\u0438 \u0442\u0435\u043a\u0441\u0442 \u043e\u0442\u0437\u044b\u0432\u0430","errRecStyleEmpty":"\u0412\u044b \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043e\u0446\u0435\u043d\u043a\u0443"};

function chkRecStyle(sfx) {
	var radios = {"plus":"Plus","minus":"Minus","so_so":"SoSo"};
	var val = $('input[name="recStyle' + sfx + '"]:checked').val();
	for (var key in radios) {
		if (key == val) {
			$('#lRecStyle' + sfx + radios[key]).attr('class', key);
			$('#fRecStyle' + sfx + radios[key]).attr('class', 'checked');
		} else {
			$('#lRecStyle' + sfx + radios[key]).attr('class', key + '_inact');
			$('#fRecStyle' + sfx + radios[key]).attr('class', '');
		}
	}
}

function saveRecommend() {
	var err = false;
	$('div[id^="errRec"]').text('');
	$('#fRecText').removeClass('inp_error');
	var post = ['user=' + user, 'person=' + person];
	var fromUser = parseInt($('#fromUser').val());
	post.push('fromUser=' + fromUser);

	var val = $.trim($('#fRecText').val());
	if (!val.length) {
		err = true;
		$('#errRecText').text(errs.errRecTextEmpty);
		$('#fRecText').addClass('inp_error');
		$('#fRecText').focus();
	} else {
		post.push('recText=' + val.encode());
	}
	if ($('input[name="recStyle"]:checked').length == 0) {
		err = true;
		$('#errRecStyle').text(errs.errRecStyleEmpty);
	} else {
		post.push('recStyle=' + $('input[name="recStyle"]:checked').val());
	}
	if (!fromUser) {
		var val = $.trim($('#fEmail').val());
		if (!val.length) {
			err = true;
			$('#errEmail').text('Укажите Ваш e-mail');
			$('#fEmail').addClass('inp_error');
			$('#fEmail').focus();
		} else if (val.search(regExpEmail) < 0) {
			err = true;
			$('#errEmail').text('Неверный e-mail');
			$('#fEmail').addClass('inp_error');
			$('#fEmail').focus();
		} else {
			post = ['act=userRecNewUnReg', 'email=' + val];
		}
	}
	if (err) {
		return;
	} else if (fromUser) {
		post.push('act=userRecNew');
		$.ajax({
			data: post.join('&'),
			dataType: 'json',
			success: function(data) {
				if (data.ok) {
					recTypes[data.userType] ++;
					$('#t' + data.userType).show('slow');
					$('#recs_' + data.userType).append(data.html);
					$('#frmRec').hide('slow');
					$('#pRecExists').show('slow');
					chkRecDivsFirst();
					$('#fRecText').val('');
					$('input[name="recStyle"]:checked').attr('checked', '');
					chkRecStyle('');
					$('#t' + data.userType + ' .high').text(data.sum.plus);
					$('#t' + data.userType + ' .mid').text(data.sum.so_so);
					$('#t' + data.userType + ' .low').text(data.sum.minus);
					$.jGrowl(msgSaved.yes, jGrowlOpts.yes);
				} else {
					$('#errRecText').html(data.err);
					$('#fRecText').addClass('inp_error');
					$('#fRecText').focus();
					$.jGrowl(msgSaved.not, jGrowlOpts.not);
				}
			}
		});
	} else {
		$.ajax({
			data: post.join('&'),
			dataType: 'json',
			success: function(data) {
				if (data.ok) {
					$('#fromUser').val(data.user);
					$('#coords').hide('slow').remove();
					saveRecommend();
				} else {
					$('#errEmail').html(data.err);
					$('#fEmail').addClass('inp_error');
					$('#fEmail').focus();
					$.jGrowl(msgSaved.not, jGrowlOpts.not);
				}
			}
		});
	}
}

function reqUserRecEdit(fromUser) {
	var postData = ['act=userRecEdit', 'person=' + person, 'fromUser=' + fromUser];
	$.ajax({
		data: postData.join('&'),
		dataType: 'json',
		success: function(data) {
			$('#recText').hide();
			$('#recMenu').hide();
			$('#fRecText2').val(data.recText);
			$.each($('input[name="recStyle2"]'), function() {
				if ($(this).val() == data.recStyle) { $(this).attr('checked', 'checked'); }
			});
			chkRecStyle('2');
			$('#divRecEdit').show('slow');
			$('#fRecText2').keypress(function(e){
				var code = (e.charCode) ? e.charCode : ((e.keyCode) ? e.keyCode : ((e.which) ? e.which : 0));
				if (code == 13 && e.ctrlKey) {
					$('#recButton2').click();
				}
			});
			$('#fRecText2').focus();
		}
	});
	return;
}

function reqUserRecCancel() {
	$('#run').show();
	$('#divRecEdit').hide('slow');
	$('#recText').show('slow');
	$('#recMenu').show('slow');
	$('#run').hide();
	return;
}

function reqUserRecUpdate(fromUser) {
	var err = false;
	$('div[id^="errRec"]').text('');
	$('#fRecText2').removeClass('inp_error');
	postData = ['act=userRecUpdate', 'user=' + user, 'person=' + person, 'fromUser=' + fromUser];
	var val = $.trim($('#fRecText2').val());
	if (!val.length) {
		err = true;
		$('#errRecText2').text(errs.errRecTextEmpty);
		$('#fRecText2').addClass('inp_error');
		$('#fRecText2').focus();
	} else {
		postData.push('recText=' + val.encode());
	}
	if ($('input[name="recStyle2"]:checked').length == 0) {
		err = true;
		$('#errRecStyle2').text(errs.errRecStyleEmpty);
	} else {
		postData.push('recStyle=' + $('input[name="recStyle2"]:checked').val());
	}
	if (err) {
		return;
	}
	$.ajax({
		data: postData.join('&'),
		dataType: 'json',
		success: function(data) {
			$('#divRecEdit').hide('slow');
			$('#recText').html(data.recText);
			$('#recText').show('slow');
			$('#recMenu').show('slow');
			$('#recDate').text(data.recDate);
			$('#recDate').attr('class', 'date ' + data.recStyle);
			$('#t' + data.userType + ' .high').text(data.sum.plus);
			$('#t' + data.userType + ' .mid').text(data.sum.so_so);
			$('#t' + data.userType + ' .low').text(data.sum.minus);
			$.jGrowl(msgSaved.yes, jGrowlOpts.yes);
		}
	});
	return;
}

function reqUserRecDelete(fromUser) {
	if (confirm('Вы действительно хотите удалить эту рекомендацию?')) {
		var postData = ['act=userRecDelete', 'person=' + person, 'fromUser=' + fromUser];
		$.ajax({
			data: postData.join('&'),
			dataType: 'json',
			success: function(data) {
				recTypes[data.userType] --;
				$('#recDiv_' + data.userType + fromUser).remove();
				$('#t' + data.userType + ' .high').text(data.sum.plus);
				$('#t' + data.userType + ' .mid').text(data.sum.so_so);
				$('#t' + data.userType + ' .low').text(data.sum.minus);
				$('#pRecExists').hide();
				$('#frmRec').show();
				chkRecDivsFirst();
				chkRecTypes(false);
				$('#fRecText').focus();
				$.jGrowl(msgSaved.yes, jGrowlOpts.yes);
			}
		});
	}
	return;
}

function sendRecRequest() {
	$('#errNameEmail').empty();
	var err = '', re = {'login': /^[0-9a-z]{3,}$/i, 'email': regExpEmail};
	var val = $.trim($('#txtNameEmail').val());
	var post = ['act=sendRecRequest'];
	if (!val.length) {
		err = 'Введите имя пользователя или email';
	} else if (val.search(re.email) >= 0) {
		post.push('email=' + val);
	} else if (val.search(re.login) >= 0) {
		post.push('login=' + val);
	} else {
		err = 'Неверный формат имени пользователя или email';
	}
	if (err.length > 0) {
		$('#errNameEmail').text(err);
		$('#txtNameEmail').focus();
	} else {
		val = $.trim($('#txtMessage').val());
		post.push('message=' + val.encode());
		$.ajax({
			data: post.join('&'),
			dataType: 'json',
			success: function(data) {
				if (data.ok) {
					$.jGrowl(msgSaved.yes, jGrowlOpts.yes);
				} else {
					$('#errNameEmail').text(data.err);
					$.jGrowl(msgSaved.not, jGrowlOpts.not);
				}
			}
		});
	}
	return;
}

function vkontakteLogin() {
	VK.Auth.login(function(response) {
		if (response.session) {
			var code;
			code = 'return {';
			code += 'me: API.getProfiles({uids: API.getVariable({key: 1280}), fields: "sex,bdate,photo_big,photo_medium,city"})[0]';
			code += '};';
			VK.Api.call('execute', {'code': code}, function(data) {
				var post = ['act=auth'];
				$.each(data.response.me, function(key, val) {
					post.push(key + '=' + encodeURIComponent(val));
				});
				$.ajax({
					type: 'post',
					url: '/ajax/vkontakte.ajax.php',
					cache: false,
					data: post.join('&'),
					dataType: 'json',
					success: function(data) {
						if (data.ok) {
							$('#fromUser').val(data.user);
							$('#coords').hide('slow').remove();
						} else {
							$('#errEmail').html(data.err);
							$.jGrowl(data.err, jGrowlOpts.not);
						}
					}
				});
			});
		}
	});
}
function accessContactEmail() {
	pageTracker._trackPageview('/ajaxevents/getcontacts-virtuzor-register');
	$('[id^="err-access-contact-"]').empty();
	var postData = ['act=openContactEmail', 'person=' + person];
	var email = $.trim($('#access-contact-email').val());
	if (!email.length) {
		$('#err-access-contact-email').text('Введите адрес эл. почты');
		$('#access-contact-email').focus();
		return;
	} else if (email.search(regExpEmail) < 0) {
		$('#err-access-contact-email').text('Неправильный формат эл. почты');
		$('#access-contact-email').focus();
		return;
	} else {
		postData.push('email=' + email.encode());
	}
	$.ajax({
		data: postData.join('&'),
		dataType: 'json',
		success: function(data) {
			if (data.ok) {
				reqGetContent('info', '');
			} else {
				$('#err-access-contact-email').html(data.err);
				$('#access-contact-email').focus();
				$.jGrowl('Ошибка регистрации', jGrowlOpts.not);
			}
		}
	});
	return;
}

function accessContactVK() {
	pageTracker._trackPageview('/ajaxevents/getcontacts-virtuzor-loginvk');
	VK.Auth.login(function(response) {
		if (response.session) {
			var code;
			code = 'return {';
			code += 'me: API.getProfiles({uids: API.getVariable({key: 1280}), fields: "sex,bdate,photo_big"})[0]';
			code += '};';
			VK.Api.call('execute', {'code': code}, function(data) {
				var post = ['act=auth', 'person=' + person, 'accessContact=1'];
				$.each(data.response.me, function(key, val) {
					if ($.inArray(key, ['uid', 'sex', 'photo_big', 'last_name', 'first_name', 'bdate']) >= 0) {
						post.push(key + '=' + encodeURIComponent(val));
					}
				});
				$.ajax({
					type:     'post',
					url:      '/ajax/vkontakte.ajax.php',
					cache:    false,
					data:     post.join('&'),
					dataType: 'json',
					success:  function(data) {
						if (data.ok) {
							reqGetContent('info', '');
						} else {
							$.jGrowl(data.err, jGrowlOpts.not);
						}
					}
				});
			});
		}
	});
	return;
}

function accessContactMM() {
	pageTracker._trackPageview('/ajaxevents/getcontacts-virtuzor-loginmm');
	mailru.connect.getLoginStatus(function(result) {
		if (result.is_app_user == 1) {

	        mailru.common.users.getInfo(function(result){
				var post = ['act=auth'];
				$.each(result[0], function(key, val) {
					if ($.inArray(key, ['uid', 'sex', 'pic_big', 'last_name', 'first_name', 'birthday', 'link']) >= 0) {
						post.push(key + '=' + encodeURIComponent(val));
					}
				});

				$.ajax({
					type:     'post',
					url:      '/ajax/moimir.ajax.php',
					cache:    false,
					data:     post.join('&'),
					dataType: 'json',
					success:  function(data) {
						if (data.ok) {
							reqGetContent('info', '');
						} else {
							$.jGrowl(data.err, jGrowlOpts.not);
						}
					}
				});
			});

		} else {
			mailru.connect.login();
		}
	});
}

function accessContactLogin() {
	pageTracker._trackPageview('/ajaxevents/getcontacts-virtuzor-loginv');
	var loginErrs = {"errcookies":"\u041d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u043f\u0440\u0438\u0451\u043c cookies \u0432 \u0412\u0430\u0448\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435","errloginempty":"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043b\u043e\u0433\u0438\u043d","errloginincorrect":"\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043b\u043e\u0433\u0438\u043d\u0430","errpasswordempty":"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0430\u0440\u043e\u043b\u044c","errpasswordincorrect":"\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u0430\u0440\u043e\u043b\u044f","errusernotfound":"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u043e\u0448\u0438\u0431\u043b\u0438\u0441\u044c \u0432 \u043b\u043e\u0433\u0438\u043d\u0435 \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u0435","errusernotconfirmed":"\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u0430\u0439\u0442\u043e\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u044d\u043b. \u043f\u043e\u0447\u0442\u044b","erruserbanned":"\n\t\u0414\u0430\u043d\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0437\u0430\u043d\u0435\u0441\u0435\u043d \u0432 \u0431\u0430\u043d-\u043b\u0438\u0441\u0442, \u043f\u043e \u0432\u0441\u0435\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c \u043e\u0431\u0440\u0430\u0449\u0430\u0439\u0442\u0435\u0441\u044c \u0432 <a href=\"http:\/\/virtuzor.ru\/feedback\/\"><span>\u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c<\/span><\/a>\n"}, err = false;
	$('[id^="err-access-contact-"]').empty();
	var post = ['memory=true'];
	var aRegExp = {'login': /^[0-9a-z]{3,}$/i, 'password': /^[0-9a-z]{6,}$/i};
	$.each(['password', 'login'], function() {
		var val = $.trim($('#access-contact-' + this).val());
		if (val.length == 0 || val == 'Логин' || val == 'Пароль') {
			$('#err-access-contact-' + this).text(loginErrs['err' + this + 'empty']);
			$('#access-contact-' + this).focus();
			err = true;
		} else if (val.search(aRegExp[this]) < 0) {
			$('#err-access-contact-' + this).text(loginErrs['err' + this + 'incorrect']);
			$('#access-contact-' + this).focus();
			err = true;
		} else {
			post.push(this + '=' + val.encode());
		}
	});
	if (err) return;
	$.ajax({
		url: '/ajax/user.login.ajax.php',
		data: post.join('&'),
		dataType: 'json',
		success: function(data) {
			if (data.ok) {
				reqGetContent('info', '');
			} else {
				$('#err-access-contact-login').html(data.text);
				$.jGrowl('Ошибка авторизации', jGrowlOpts.not);
			}
			busy = false;
			$('#run').hide();
		}
	});
	return;
}
