var Startup = {
	host: window.location.href.split('/')[2],
	UseSSL: false,
	lang: Locale['_Startup'],

	Relay: function(r)
	{
		var mainhost = ((this.host.split('.')[1]=='krozilo') ? 'krozilo.com' : this.host);
		switch (r.event.action)
		{
			case 'ChangePassword':
			{
				if(!r.variables.status)
				{
					var old = Settings.Pages.ChangePassword.getElementsByTagName('input')[0];
					old.value = '';
					old.focus();
					window.alert(this.lang['OldPasswordInvalid']);
				}
				else
				{
					window.alert(this.lang['PasswordChangedOk']);
					Settings.Hide();
					var fields = Settings.Pages.ChangePassword.getElementsByTagName('input');
					fields[0].value = '';
					fields[1].value = '';
					fields[2].value = '';
				}
				break;
			}
			case 'checkLogin':
			{
				if (r.variables.LoginStatus)
				{
					$('NewUserName').parentNode.nextSibling.innerHTML = this.lang['UserNameFree'];
					$('NewUserName').parentNode.previousSibling.className = 'label';
					$('NewUserName').className = 'valid';
					this.isUserValid = true;
				}
				else
				{
					var error = '';
					switch(r.variables.errcode)
					{
						case 1:
							error = this.lang['UserNameShort'];
							break;
						case 2:
							error = this.lang['UserNameIncorrect'];
							break;
						case 3:
							error = this.lang['ErrorUserNameExist'];
							break;
					}
					$('NewUserName').parentNode.nextSibling.innerHTML = error;
					$('NewUserName').parentNode.previousSibling.className = 'label-invalid';
					$('NewUserName').className = 'invalid';
					this.isUserValid = false;
				}
				break;
			}
			case 'TryLogin':
			{
				if (r.variables.LoginStatus)
				{
					if(this.UseSSL)
						var href = 'https://'+mainhost;
					else
						var href = 'http://'+mainhost;
					document.location.href = href;
				}
				else
					window.alert(this.lang['UserOrPasswordInvalid']);
				break;
			}
			case 'Logout':
			{
				if(this.UseSSL)
					var href = 'https://'+mainhost;
				else
					var href = 'http://'+mainhost;
				document.location.href = href;
				break;
			}
			case 'StartRegister':
			{
				if(r.variables.LoginStatus)
				{
					if(this.UseSSL)
						var href = 'https://'+mainhost;
					else
						var href = 'http://'+mainhost;
					document.location.href = href+'/'+r.variables.UserName;
				}
				else
				{
					switch(r.variables.errcode)
					{
						case 1:
							window.alert(this.lang['UserNameShort']);
							break;
						case 2:
							window.alert(this.lang['UserNameIncorrect']);
							break;
						case 3:
							window.alert(this.lang['ErrorUserNameExist']);
							break;
					}
				}
				break;
			}
			case 'testUrl':
			{
				this.CB_testURL(r);
				break;
			}
			case 'reset':
			{
				if(r.variables.status)
				{
					document.location.href = '/';
				}
				break;
			}
		}
	},

	DrawLoginForm: function()
	{
		this.RForm = new __Dialog(300, null, { BlockAll: true });
		ce('h1', this.RForm.Container, { innerHTML: Locale['Enter']} );
		ce('div', this.RForm.Container, { className: 'content', innerHTML: '<form id="StartLogin"><table><tr><td class="label">'+ Locale['Login'] +'</td><td class="field"><input type="text" id="NewUserName" name="l" maxlength="16"/></td></tr>'+
		'<tr><td class="label">'+ Locale['Password'] +'</td><td class="field"><input type="password" id="UserPassword" name="p" maxlength="16"/></td></tr>'+
		''+
		'<tr><td colspan="2" class="button"><input type="submit" value="'+ Locale['Enter'] +'"/></td></tr></table></form>'});
		$('StartLogin').onsubmit = this.TryLogin.bind(this);
	},

	Logout: function()
	{
		Update.request('Startup', 'startup', 'Logout', { }, { }, true );
	},

	TryLogin: function()
	{
		var tmp = this.host.split('.');
		if(tmp[1] == 'krozilo' && tmp[0]!='k3')	//мы на поддомене
		{
			var oForm = $('StartLogin');
			if(this.UseSSL)
				var href = 'https://krozilo.com/login.php';
			else
				var href = 'http://krozilo.com/login.php';
			oForm.action = href;
			oForm.method = 'post';
			return true;
		}
		else
		{
			Update.request('Startup', 'startup', 'TryLogin', { }, { user: $('NewUserName').value, password: $('UserPassword').value }, true );
			return false;
		}
	},

	DrawFeedbackForm: function()
	{
		this.RForm = new __Dialog(450, null, { BlockAll: true });
		ce('h1', this.RForm.Container, { innerHTML: Locale['Feedback']} );
		ce('div', this.RForm.Container, { className: 'content', innerHTML: DialogsData.FeedbackForm});

		var button = $('FeedbackSubmit');
		button.onclick = function()
		{
			var email = this.parentNode.getElementsByTagName('input')[0];
			var text = this.parentNode.getElementsByTagName('textarea')[0];
			Update.request('Desktop', 'startup', 'feedback', { }, { email: $F(email), text: $F(text)}, true );
			Startup.RForm.Close();
		}
	},

	DrawRegisterForm: function()
	{
		this.RForm = new __Dialog(450, null, { BlockAll: true });
		ce('h1', this.RForm.Container, { innerHTML: Locale['Registration']} );
		var InnerDiv = ce('div', this.RForm.Container, { className: 'content' });
		InnerDiv.update(DialogsData.RegisterForm);
		$('NewUserName').onkeyup = this.checkUserNameOnFly.bind(this);
		$('UserPassword').onkeypress = this.CheckPasswordStrong.bind(this);
		$('StartRegister').onsubmit = this.StartRegister.bind(this);
	},

	StartRegister: function()
	{
		if (!this.isUserValid)
		{
			window.alert(this.lang['UserNameInvalid']);
			return(false);
		}
		//if ($F('UseSSL')) this.UseSSL = true; else this.UseSSL = false;
		Update.request('Startup', 'startup', 'StartRegister', {}, {user: $F('NewUserName'), password: $F('UserPassword')}, true);
		this.RForm.Close();
		return false;
	},

	CreateNewUser: function()
	{
		this.RForm.Hide();
	},

	CalcPwdStrong: function(password)
	{
		var strong = 0;
		if(password.length>8)
			strong++;
		if(password.toUpperCase() != password && password.toLowerCase() != password)
			strong++;
		if(password.match(/[0-9]+/))
			strong++;
		return strong;
	},

	CheckPasswordStrong: function()
	{
		var StrongMsg = [this.lang['PasswordCapability'][0], this.lang['PasswordCapability'][1], this.lang['PasswordCapability'][2], this.lang['PasswordCapability'][3]];
		var strong = this.CalcPwdStrong($('UserPassword').value);
		$('UserPassword').parentNode.nextSibling.innerHTML = StrongMsg[strong];
		if(strong<2)
		{
			$('UserPassword').parentNode.previousSibling.className = 'label-invalid';
			$('UserPassword').className = 'invalid';
		}
		else
		{
			$('UserPassword').className = 'valid';
			$('UserPassword').parentNode.previousSibling.className = 'label';
		}
	},

	//Проверка логина на лету
	checkUserNameOnFly: function()
	{
		var oInput = $('NewUserName');
		
		for(var i=0; i<oInput.value.length; i++)
		{	//убираем недопустимые символы
			if((i==0 && oInput.value.substr(0, 1).match(/[^a-z0-9@]/i)) ||
				(i > 0 && oInput.value.substr(i, 1).match(/[^a-z0-9\-_@]/i)) )
			{
				var s = oInput.value.substring(0,i) + oInput.value.substr(i+1);
				oInput.value = s;
				i--;
				continue;
			}
		}
		if(oInput.value.length > 1)
		{
			if(this.Timer)
				clearTimeout(this.Timer);
			this.Timer = setTimeout(function() {
					Update.request('Startup', 'startup', 'checkLogin', {}, {user: $F('NewUserName')}, true);
				}, 900 );
		}
	},

	initProfileToFriend: function()
	{
		var self = this;
		var fEmail = window.prompt(Locale['_Settings']['ProfileToFriend'] +"\n"+ Locale['Email'] +':');
		if(fEmail)
		{
			if(/^[a-z0-9\.\_\-]+@[a-z0-9\.\-]+\.[a-z]{2,8}$/i.test(fEmail))
			{
			   Update.request('GProfile', 'startup', 'ProfileToFriend', {}, {email: fEmail}, true);
			}
			else
			{
				window.alert(Locale['_Settings']['msg']['InputCorrectEmail']);
			}
			return false;
		}
	},

	resetToDefault: function()
	{
		if(window.confirm(((!isEmpty(SProfile.user) && SProfile.user.id) ? Locale['_Desktop']['QResetToDefaultsReg'] : Locale['_Desktop']['QResetToDefaultsUnreg'])))
		{
			Update.request('Startup', 'startup', 'reset', null, null, true);
		}
	},
	
	//-------------------------------------------------------------------------------
	CB_testURL: function(data)
	{
		if(!data || !data.variables) return false;
	
		var vars = data.variables;
		var TabID = vars.TabID;
	
		var TabObj = $('Content.cMain.'+TabID);
		var iframeObj = $('Browser.'+TabID);
		var BrowserErrorObj = $('BrowserError.'+TabID);
		
		if(!TabObj) return false;
	
		if(sizeof(data.errors) > 0) {
			//alert(data.errors[0].message);				
			BrowserErrorObj.style.display = '';			
			BrowserErrorObj.innerHTML = '<br><br><br><br><br>'+data.errors[0].message;			
			return false;
		}
		//<iframe frameborder="0" name="Browser.14" id="Browser.14" style="height: 320px;"/>
	
		if(!iframeObj) return false;

		//проверка на сервере прошла удачно
		//делаем проверку на стороне клиента
		if(vars.result && vars.testStatus && vars.testStatus == 'clean') {	
			
			//http://k3.ayco.ru/tests/test_load.html?testurl=http://mail.ru
			//var wnd = window.open('/htmls/test_url.html?testurl='+vars.url,'testWindow');
			iframeObj.src = vars.url;
	
		//проверка на сервере не прошла
		//открываем во фрейме через proxy
		}
		else
		{
			iframeObj.src = '/prxy/_'+vars.url;
		}
	}
}