/* Высота и ширины рабочей области */
function screenSize()
	{
    var w, h; // Объявляем переменные, w - длина, h - высота
    w = (window.innerWidth ? window.innerWidth : (document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.offsetWidth));
    h = (window.innerHeight ? window.innerHeight : (document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.offsetHeight));
    return {w:w,h:h};
	}

/* Высота и ширины рабочей области */
function totalSize()
	{
    var w, h; // Объявляем переменные, w - длина, h - высота
    w = document.body.clientWidth;
    h = document.body.clientHeight;
    return {w:w,h:h};
	}

function size()
	{
	alert("Длина = " + screenSize().w + "px<br />" + "Высота = " + screenSize().h + "px");
	}

function tSize()
	{
	alert("Длина = " + totalSize().w + "px<br />" + "Высота = " + totalSize().h + "px");
	}
var popups = new Array();
function messageBox(id_element, name, content, buttons)
	{
	this.id_element = id_element;
	this.name = name;
	this.inner = content;
	this.buttons = buttons;
    popups[this.id_element] = this;

	this.submit = function(){};

	this.getHeader = function()
		{
		return '<h2><span>' + this.name + '</span></h2>';
		}

	this.getInner = function()
		{
		return '<div class="inner">' + this.inner  + '</div>';
		}

	this.getButtons = function()
		{
		var html = '';
		for	(var i in this.buttons)
			{
			html += '<div class="link" class="' + i +'" id="'
			  + this.id_element
			  + '_'
			  + i
			  + '"><b></b><div class="btnname"><span>'
			  + this.buttons[i]['title']
			  + '</span></div></div>';
			}
		html = '<div class="popup_buttons">' + html + '<i class="floatbreaker"></i></div>';
		return html;
		}

	this.initButtons = function()
		{
		for	(var i in this.buttons)
			{
			if (typeof this.buttons[i]['onclick'] == 'function')// Вдруг не задан онклик
				{
				$('#' + this.id_element+ '_' + i).click(this.buttons[i]['onclick']);
				}
			else if(i == 'close')// Если кнопка закрыть
				{
				$('#' + this.id_element+ '_' + i).click(this.actionDestroy);
				}
			}
		}

	this.createBlock = function()
		{
		html = '<div id="' + this.id_element + '" class="popup" style="display:none;">'
		  + this.getHeader()
		  + this.getInner()
		  + this.getButtons()
		  + '</div>';
		$('body').append(html);
		$('#' + this.id_element).fadeIn('fast');
		}

	this.createBackground = function()
		{
		$('body').append('<div class="popup_transparent_bg" style="display:none;" onclick="popups[\'' +  this.id_element + '\'].actionDestroy();"></div>');
		$('.popup_transparent_bg').show();
		}

	this.actionCreate = function()
		{
		this.createBackground();
		this.createBlock();
		this.calculatePosition();
		this.initButtons();
		//this.actionPrepare(); // Удаляем офервлоу с боди
		}

	// Поскольку функция биндится, параметры в неё передаются наследованием из initButtons
	this.actionDestroy = function()
		{
		$('#' + id_element).remove();
		$('.popup_transparent_bg').remove();
		//this.actionUnprepare(); // Востанавливаем офервлоу с боди
		}

	this.calculatePosition = function()
		{ 
		// Высота прозрачного слоя
		$('.popup_transparent_bg').css('height', totalSize().h + 'px');
		var boxWidth = $('#' + this.id_element).width();
		var boxHeight = $('#' + this.id_element).height();
		var screenWidth = screenSize().w;
		var screenHeight = screenSize().h;
		var boxLeftMargin = (screenWidth - boxWidth) / 2;
		var boxTopMargin = (screenHeight - boxHeight) / 2;
		$('#' + this.id_element).css('left', boxLeftMargin);
		$('#' + this.id_element).css('top', boxTopMargin);
		}

	this.actionPrepare = function()
		{
		if (typeof document.body.style.maxHeight === "undefined")//if IE 6
			{
			$("body","html").css({ height: "100%" });
			}
			$("html").css("overflow-y", "hidden");
			$("html").css("overflow-x", "hidden");
			$("body").css('padding-right', '16px');
		}

	this.actionUnprepare = function()
		{
		if (typeof document.body.style.maxHeight === "undefined")//if IE 6
			{
	    	$("body","html").css(
	    		{
	    		height: "auto",
	    		width: "auto"
	    		});
			}
			$("html").css("overflow-y","scroll");
			$("html").css("overflow-x","hidden");
			$("body").css('padding-right','0px');
		}
	}

/* Выводит сообщение в стиле alert(), только через нашу собственную апи */
function alertMessage(header, body)
	{
	var oAlert = new messageBox('alert',header,body,
		{
		close:
			{
			title: 'OK',
			onclick: function()
				{
				oAlert.actionDestroy();
				}
			}
		});
	oAlert.actionCreate();
	}

/*Encodes data to Base64 format*/
function base64Encode(data)
	{
	if (typeof(btoa) == 'function')
		{
		return btoa(data);
		} //use internal base64 functions if available (gecko only)
	var b64_map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
	var byte1, byte2, byte3;
	var ch1, ch2, ch3, ch4;
	var result = new Array(); //array is used instead of string because in most of browsers working with large arrays is faster than working with large strings
	var j=0;
	for (var i=0; i<data.length; i+=3)
		{
		byte1 = data.charCodeAt(i);
		byte2 = data.charCodeAt(i+1);
		byte3 = data.charCodeAt(i+2);
		ch1 = byte1 >> 2;
		ch2 = ((byte1 & 3) << 4) | (byte2 >> 4);
		ch3 = ((byte2 & 15) << 2) | (byte3 >> 6);
		ch4 = byte3 & 63;
		if (isNaN(byte2))
			{
			ch3 = ch4 = 64;
			}
		else if (isNaN(byte3))
			{
			ch4 = 64;
			}
		result[j++] = b64_map.charAt(ch1)+b64_map.charAt(ch2)+b64_map.charAt(ch3)+b64_map.charAt(ch4);
		}
	return result.join('');
	}

/*Decodes Base64 formated data*/
function base64Decode(data)
	{
	data = data.replace(/[^a-z0-9\+\/=]/ig, '');// strip none base64 characters
	if (typeof(atob) == 'function') return atob(data);//use internal base64 functions if available (gecko only)
	var b64_map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
	var byte1, byte2, byte3;
	var ch1, ch2, ch3, ch4;
	var result = new Array(); //array is used instead of string because in most of browsers working with large arrays is faster than working with large strings
	var j=0;
	while ((data.length%4) != 0)
		{
		data += '=';
		}
	for (var i=0; i<data.length; i+=4)
		{
		ch1 = b64_map.indexOf(data.charAt(i));
		ch2 = b64_map.indexOf(data.charAt(i+1));
		ch3 = b64_map.indexOf(data.charAt(i+2));
		ch4 = b64_map.indexOf(data.charAt(i+3));
		byte1 = (ch1 << 2) | (ch2 >> 4);
		byte2 = ((ch2 & 15) << 4) | (ch3 >> 2);
		byte3 = ((ch3 & 3) << 6) | ch4;
		result[j++] = String.fromCharCode(byte1);
		if (ch3 != 64) result[j++] = String.fromCharCode(byte2);
		if (ch4 != 64) result[j++] = String.fromCharCode(byte3);
		}
	return result.join('');
	}

/* отправка формы */
function submitForm(e)
	{
	form = getForm(e);
	form.submit();
	}

/* получение формы, в которую обёрнут передаваемый элемент */
function getForm(element)
	{
	while(true)
		{
		if (element.tagName.toLowerCase() == 'form')
			{
			return element;
			}
		element = element.parentNode;
		if (!element)
			{
			break;
			}
		} // while
	return null;
	}


/* Получаем в ответ версию флеш */
function flash_version()
	{
	var d, n = navigator, m, f = 'Shockwave Flash';
	if((m = n.mimeTypes) && (m = m["application/x-shockwave-flash"]) && m.enabledPlugin && (n = n.plugins) && n[f]) {d = n[f].description}
	else if (window.ActiveXObject) { try { d = (new ActiveXObject((f+'.'+f).replace(/ /g,''))).GetVariable('$version');} catch (e) {}}
	return d ? d.replace(/\D+/,'').split(/\D+/) : [0,0];
	}

/* Переходим по url */
function getUrl(url)
	{
	document.location = url;
	}


$(document).ready(function()
	{
	
	$("tr:nth-child(even)").addClass("odd");
	
	$('.hvrbl').each(function(n, user)
		{
		$(this).mouseenter(function()
			{
			$(this).addClass('selected');
			});
		$(this).mouseleave(function()
			{
			$(this).removeClass('selected');
			});
		});
		
	$('#menu .subhead').click(function(){
		openMenu(this);
	});
	
	$('#gallery_slider_left')
		.mouseover(function(){start_scroll_left()})
		.mouseout(function(){stop_scrolling()});
	$('#gallery_slider_right')
		.mouseover(function(){start_scroll_right()})
		.mouseout(function(){stop_scrolling()});
	});

var menu_opened =  'school';
function openMenu(element) 
	{	
	var rel = $(element).attr('rel');	
	// Если открываем и закрываем разные блоки
	if (menu_opened !== rel) 
		{		
		$('.' + rel + ' ul').slideDown(800, function()
			{
			$('.' + rel).removeClass('closed').addClass('open')
			});
		$('.' + rel + ' .subhead').addClass('white');
		
		$('.' + menu_opened + ' ul').slideUp(800, function()
			{
			$('.' + menu_opened).removeClass('open').addClass('closed')
			});
		$('.'+menu_opened+' .subhead').removeClass('white');
		menu_opened = rel;		
		} 
	else if (menu_opened == 0) 
		{ 
		$('.'+rel+' ul').slideDown(800, function()
			{
			$('.'+rel).removeClass('closed').addClass('open')
			});
		$('.'+rel+' .subhead').addClass('white');
		
		} 
	else 
		{		
		$('.'+rel+' ul').slideUp(800, function(){
			$('.'+rel).removeClass('open').addClass('closed')});
		$('.'+rel+' .subhead').removeClass('white');
		menu_opened = 0;
		}
	}

function addEmail() 
	{
	var email = $('#newEmail').val();
	var check = checkemail(email);
	if (check == false) 
		{
		popAlert('Ошибка','Введите правильный email');
		}
	else
		{		
		$.ajax({
			method: "get",
			url: "/email/add",
			data: 'email='+email,
		  success: function(html)
			{
			if (html == 'confirm')	
				{
				alertMessage('Подписка', 'Ваша почта добавлена в список рассылки, для того чтобы подтвердить подписку,'
					                 + ' вам было отправлено письмо. В письме указана ссылка, пройдите по ней для подтверждения подписки');
				}
			else if (html == 'needconfirm')
				{
				alertMessage('Подписка', 'Вы уже подписывались на эту рассылку, но не подтвердили свой почтовый ящик.<br/>'
									  +'Для того, чтобы подтвердить свою подписку, вам было повторно выслано письмо, с ссылкой подтверждения подписки');
				}
			else
				{
				alertMessage('Подписка', 'Вы уже подписаны на рассылку');
				}
			},
		  error:function()
			{
			alert('error');
			}
		});		
		}
	}
	 
	 
function checkemail(e) 
	{
	var emailfilter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return emailfilter.test(e);
	}

var openedElement;
function gallery_openImg(element,id)
	{
	$('#gallery_img_holder').html('<img src="/storage/gallery/' + id + '.jpg">');
	
	var outlineInner = ( $('#gallery_thumbnails').width() / 2 );
	var offsetImage = ( $(element).offset().left - $('#gallery_thumbnails').offset().left );
	
	var halfImageWidth = ( $(element).width() / 2 );
	
	var scrollFix = outlineInner - offsetImage - halfImageWidth;
	
	var scrollContainer = $('#gallery_thumbnails').scrollLeft() - scrollFix;
	$('#gallery_thumbnails').scrollLeft(scrollContainer);
	$(element).children('img').addClass('active');
	$(openedElement).children('img').removeClass('active');
	openedElement = element;
	}
	
/*----------------------- POPUPS --------------------------------*/



function openPopup()
	{
	
	var oMsgAddUser = new messageBox('msgAddUser','Добавить пользователя',body,
		{
		close:
			{
			title: 'Отмена',
			onclick: function()
				{
				oMsgAddUser.actionDestroy();
				}
			},
		add:
			{
			title: 'Добавить пользователя',
			onclick: function()
				{
				var username = $('#msgAddUser_input').val();
				var text = $('#Message_text').val();
				text =  text + ' @' + username + ' ';
				$('#Message_text').val(text);
				formFocus('#Message_text');
				oMsgAddUser.actionDestroy();
				}
			}
		});
		oMsgAddUser.actionCreate();
		$("#msgAddUser_input").autocomplete("/ajax/AutocompleteUser",
			{
			delay:10,
			minChars:2,
			matchSubset:1,
			autoFill:true,
			matchContains:1,
			cacheLength:10,
			selectFirst:true,
			formatItem:liFormat_friendsList,
			maxItemsToShow:10,
			onItemSelect:msgAddUser_selectItem
		});
	}

/** Кнопка упоминания группы **/
function popup()
	{
	var oPopup = new messageBox('BoxId','Привет я попап','Тут много текста, сюда есть маза грузить аяксом',
		{
		close:
			{title: 'Отмена',onclick: function(){oPopup.actionDestroy();}},
		add:
			{
			title: 'Окей',
			onclick: function()
				{
				alert('Some function called onClick');
				
				}
			}
		});
	oPopup.actionCreate();
	}
/** Обратная связь **/
function popFeedback()
	{
	var html = '';
	html += ' <div class="hint"><div class="top"></div><div class="inner"><p>Отправьте нам сообщение или вопрос через форму обратной связи и мы ответим Вам в самое ближайшее время.</p></div></div> ';
	html += '<div class="field"><label for="name">Ваше имя:</label><input type="text" id="name"></div>';
	html += '<div class="field"><label for="email">E-mail:</label><input type="text" id="email"></div>';
	html += '<div class="field"><label for="text">Сообщение:</label><textarea id="text"></textarea></div>';
	var oFeedback = new messageBox('Feedback','Обратная связь', html,
		{
		add:{
			title: 'Отправить',
			onclick: function()
				{				
				var name = $('#name').val();
				var email = $('#email').val();
				var text = $('#text').val();
				
				$.ajax({
					method: "get",
					url: "/email/sendmail",
					data: 'email=' + email + '&text=' + text + '&name=' + name,
					success: function(html)
						{
							popAlert('Спасибо','Мы обязательно ответим вам.');
						},
					  error:function()
						{
						popAlert('Ошибка','Что-то пошло не так.');
						}
					});	
				popups['Feedback'].actionDestroy();
				}
			}
		});
	oFeedback.actionCreate();
	}


/** Регистрация **/
var RegistrForm = new Array();
RegistrForm['username'] = '';
RegistrForm['email'] = '';


function popSignup()
	{
	
	var html = '';
	html += '<div class="hint"><div class="top"></div><div class="inner"><p>';
	html += 'Для того, чтобы создать анкету и найти партнера необходимо пройти очень быструю и несложную регистрацию на сайте';
	html += '</p></div></div> ';
	html += '<div class="field"><label for="name">никнейм:</label><input type="text" id="signup_username" value='+RegistrForm['username'] +'></div>';
	html += '<div class="field"><label for="name">Email:</label><input type="text" id="singup_email" value='+RegistrForm['email'] +'></div>';
	html += '<div class="field"><label for="text">Пароль:</label><input type="password" id="signup_password"></div>';
	html += '<div class="field"><label for="text">Повторите:</label><input type="password" id="signup_password2"></div>';
	var oSingup = new messageBox('Signup','Регистрация', html,
		{
		add:{
			title: 'Зарегистрироваться',
			onclick: function()
				{				
				var username = $('#signup_username').val();
				var email = $('#signup_email').val();
				var password = $('#signup_password').val();
				var password2 = $('#signup_password2').val();
				
				RegistrForm['username'] = username;
				RegistrForm['email'] = email;
				
				if (password != password2)
					{
					popAlert('Ошибка','Пароли не совпадают? Повторите регистрацию');
					return;
					}
				
				$.ajax({
					method: "get",
					url: "/account/signup",
					data: 
						'action=signup' 
					 + '&username=' + username 
					 + '&email=' + email 
					 + '&password=' + password,
					success: function(html)
						{
							popups['Signup'].actionDestroy();
							if (html == 'registred')
								{
								popAlert('Спасибо','Регистрация прошла успешно');
								}
							if (html == 'allready')
								{
								popAlert('Спасибо','Такой пользователь уже существует, выберите другой никнейм');
								}
							else
							    {
						popAlert('Ошибка','Что-то пошло не так');
								}
						},
					  error:function()
						{
						popAlert('Ошибка','Что-то пошло не так.');
						}
					});	
				popups['Signup'].actionDestroy();
				}
			}
		});
	oSingup.actionCreate();
	}


/** Авторизация**/
function popSignin()
	{
	var html = '';
//	html += '<div class="hint"><div class="top"></div><div class="inner"><p>';
//	html += 'Для того, чтобы создать анкету и найти партнера необходимо пройти очень быструю и несложную регистрацию на сайте';
//	html += '</p></div></div> ';
	html += '<div class="field"><label for="name">никнейм:</label><input type="text" id="signin_username"></div>';
	html += '<div class="field"><label for="text">Пароль:</label><input type="password" id="signin_password"></div>';
	var oSignin = new messageBox('Signin','Ваш профайл', html,
		{
		add:{
			title: 'Войти',
			onclick: function()
				{		
				var username = $('#signin_username').val();
				var password = $('#signin_password').val();
				
				$.ajax({
					method: "get",
					url: "/account/signin",
					data: 
						'action=signin' 
					 + '&username=' + username 
					 + '&password=' + password,
					success: function(html)
						{
							popups['Signin'].actionDestroy();
							if (html == 'auth')
								{
								location.reload(true);
								}
							else
							    {
								popAlert('Ошибка','Неправильная пара "логин - пароль"');
								}
						},
					  error:function()
						{
						popAlert('Ошибка','Что-то пошло не так.');
						}
					});	
				popups['Signin'].actionDestroy();
				}
			}
		});
	oSignin.actionCreate();
	}

/** Профиль **/
function popProfile()
	{
	$.ajax({
		method: "get",
		url: "/account/profile",
		success: function(html)
			{
			if (html == 'noauth')
				{
				popAlert('Ошибка','Сударь, да вы не авторизованы))');
				return;
				}
				
				
			var oProfile = new messageBox('Profile','Мой профайл', html,
				{
	/*			add:{
					title: 'Закрыть',
					onclick: function()
						{
						popups['Profile'].actionDestroy();
						}
					},
	*/
				cancel: {
					title: 'Отмена',
					onclick: function()
						{
						popups['Profile'].actionDestroy();
						}
				},
				anketa: { 
					title: 'Добавить анкету',
					onclick: function()
						{
						popups['Profile'].actionDestroy();
						popAddAnketa();
						}
				}
				});
			oProfile.actionCreate();
			},
		  error:function()
			{
			popAlert('Ошибка','Что-то пошло не так.');
			}
		});	
	}

	function popAlert(title,text)
	{
	var html = '';
	var oAlert = new messageBox('Alert',title,text,
		{
		close:{
			title: 'Закрыть',
			onclick: function()
				{				
				popups['Alert'].actionDestroy();
				}
			}
		});
	oAlert.actionCreate();
	}

	
function partnerPopup()
	{
	if (loginin)
		{
		popAddAnketa();
		}
	else
		{
		popSignup();
		}
	}

function popAddAnketa()
	{
	
	var html = '';
	var html = '<form id="addanketa" action="/partners/addanketa" method="POST" enctype="multipart/form-data">';
	html += '<div class="field"><label for="name">ФИО:</label><input type="text" name="anketa[fio]"></div>';
	html += '<div class="field"><label for="name">Дата рождения:</label>'
																													+'<select name="anketa[dob_day]" style="width:50px;">'
																												      +'<option value="1">1</option>'
																												      +'<option value="2">2</option>'
																												      +'<option value="3">3</option>'
																												      +'<option value="4">4</option>'
																												      +'<option value="5">5</option>'
																												      +'<option value="6">6</option>'
																												      +'<option value="7">7</option>'
																												      +'<option value="8">8</option>'
																												      +'<option value="9">9</option>'
																												      +'<option value="10">10</option>'
																												      +'<option value="11">11</option>'
																												      +'<option value="12">12</option>'
																												      +'<option value="13">13</option>'
																												      +'<option value="14">14</option>'
																												      +'<option value="15">15</option>'
																												      +'<option value="16">16</option>'
																												      +'<option value="17">17</option>'
																												      +'<option value="18">18</option>'
																												      +'<option value="19">19</option>'
																												      +'<option value="20">20</option>'
																												      +'<option value="21">21</option>'
																												      +'<option value="22">22</option>'
																												      +'<option value="23">23</option>'
																												      +'<option value="24">24</option>'
																												      +'<option value="25">25</option>'
																												      +'<option value="26">26</option>'
																												      +'<option value="27">27</option>'
																												      +'<option value="28">28</option>'
																												      +'<option value="29">29</option>'
																												      +'<option value="30">30</option>'
																												      +'<option value="31">31</option>'
																												    +'</select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'
																												  
																													+'<select name="anketa[dob_month]" style="width:80px;margin-right:20px;">&nbsp;&nbsp;&nbsp;&nbsp;'
																												      +'<option value="1">январь</option>'
																												      +'<option value="2">февраль</option>'
																												      +'<option value="3">март</option>'
																												      +'<option value="4">апрель</option>'
																												      +'<option value="5">март</option>'
																												      +'<option value="6">июнь</option>'
																												      +'<option value="7">июль</option>'
																												      +'<option value="8">август</option>'
																												      +'<option value="9">сентябрь</option>'
																												      +'<option value="10">октябрь</option>'
																												      +'<option value="11">ноябрь</option>'
																												      +'<option value="12">декабрь</option>'
																													+'</select>'
																													
																													+'<input type="text" name="anketa[dob_year]" style="width:40px;">'
																													+'</div>';
																													
	html += '<div class="field"><label for="name">Рост:</label><input type="text" name="anketa[growth]"></div>';
	html += '<div class="field"><label for="name">Уровень:</label><select name="anketa[level]">' 
																												      +'<option value="1" SELECTED>слабый</option>'
																												      +'<option value="2">средний</option>'
																												      +'<option value="3">сильный</option>'
																													  +'</select>';
	html += '<div class="field"><label for="name">Пол:</label><select name="anketa[sex]">' 
																												      +'<option value="male">Мужской</option>'
																												      +'<option value="female">Женский</option>'
																													+'</select>';
																												   
	html += '<div class="field"><label for="name">Контактная информация:</label>'
																					+'<textarea type="text" name="anketa[info]"></textarea></div>';
	html += '<div class="field"><label for="name">Фотографии:</label><input type="file" name="photos"></div></div>';
	html += '</form>';
	
	
	var oAddanketa = new messageBox('Addanketa','Добавление анкеты', html,
		{
		add:{
			title: 'Добавить анкету',
			onclick: function()
				{
				$('#addanketa').submit();				
				popups['Addanketa'].actionDestroy();
				}
			}
		});
	oAddanketa.actionCreate();
	}



function popAnketa(id)
	{
	$.ajax({
		method: "get",
		url: "/partners/form",
		data: '&id_form=' + id,
		success: function(html)
			{
			
			var oForm = new messageBox('Form','<div id="placeholder"></div>', html,
				{
				cancel: {
					title: 'Закрыть',
					onclick: function()
						{
						popups['Form'].actionDestroy();
						}
				}
				});
			oForm.actionCreate();
			},
		  error:function()
			{
			popAlert('Ошибка','Что-то пошло не так.');
			}
		});	
	}

