function urlencode (str) {
	str = (str+'').toString()
	return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+');
}

function Login(sKey,form,b)
{
	var dPwd = document.getElementById('inputPassword');
	var sPwd = dPwd.value;
	//Prepare RSA library
	var rsa = new RSAKey();
	rsa.setPublic(sKey, '10001');
	var password_rsa = document.createElement('input');
	password_rsa.type = 'hidden';
	password_rsa.name = 'password_rsa';
	password_rsa.value = rsa.encrypt(sPwd);
	form.appendChild(password_rsa);
	form.password.value = '';
	
	if (document.getElementById('inputPasswordNew'))
	{
		document.getElementById('inputPasswordNew').value=rsa.encrypt(document.getElementById('inputPasswordNew').value);
	}
	
	if (document.getElementById('inputPasswordCheck'))
	{
		document.getElementById('inputPasswordCheck').value=rsa.encrypt(document.getElementById('inputPasswordCheck').value);
	}
	
	return true;
}

function getData(url) {
	if (window.XMLHttpRequest) {AJAX=new XMLHttpRequest();}
	else {AJAX=new ActiveXObject("Microsoft.XMLHTTP");}
	if (AJAX) {
		AJAX.open("GET", url, false);
		AJAX.send(null);
		return AJAX.responseText;
	} else {return false;}
}

function choose()
{
	/*enable to use pro space*/
	if(document.getElementById('selectWC')){document.getElementById('selectWC').confirmed=true;}
	/** Get OS name **/
	var OSName='';
	if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
	if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
	if (navigator.appVersion.indexOf("Mac")!=-1 && navigator.appVersion.indexOf("Mobile")!=-1) OSName="MacOSm";
	if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";
	/** **/

	/** Get client info **/
	var nVer = navigator.appVersion;
	var nAgt = navigator.userAgent;
	var browserName  = navigator.appName;
	var fullVersion  = ''+parseFloat(navigator.appVersion); 
	var majorVersion = parseInt(navigator.appVersion,10);
	var nameOffset,verOffset,ix;
	
	// In MSIE, the true version is after "MSIE" in userAgent
	if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {
	 browserName = "IE";
	 fullVersion = nAgt.substring(verOffset+5);
	}
	// In Opera, the true version is after "Opera" 
	else if ((verOffset=nAgt.indexOf("Opera"))!=-1) {
	 browserName = "OP";
	 fullVersion = nAgt.substring(verOffset+6);
	}
	// In Chrome, the true version is after "Chrome" 
	else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {
	 browserName = "CH";
	 fullVersion = nAgt.substring(verOffset+7);
	}
	// In Safari, the true version is after "Safari" 
	else if ((verOffset=nAgt.indexOf("Safari"))!=-1) {
		if(navigator.appVersion.indexOf("Mobile")!=-1)
		{
			browserName = "SFM";
		}
		else
		{
			browserName = "SF";
		}
	 fullVersion = nAgt.substring(verOffset+7);
	}
	// In Firefox, the true version is after "Firefox" 
	else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) {
	 browserName = "FF";
	 fullVersion = nAgt.substring(verOffset+8);
	}
	// In most other browsers, "name/version" is at the end of userAgent 
	else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/')) ) 
	{
	 browserName = nAgt.substring(nameOffset,verOffset);
	 fullVersion = nAgt.substring(verOffset+1);
	 if (browserName.toLowerCase()==browserName.toUpperCase()) {
	  browserName = navigator.appName;
	 }
	}
	// trim the fullVersion string at semicolon/space if present
	if ((ix=fullVersion.indexOf(";"))!=-1) fullVersion=fullVersion.substring(0,ix);
	if ((ix=fullVersion.indexOf(" "))!=-1) fullVersion=fullVersion.substring(0,ix);
	
	majorVersion = parseInt(''+fullVersion,10);
	if (isNaN(majorVersion)) {
	 fullVersion  = ''+parseFloat(navigator.appVersion); 
	 majorVersion = parseInt(navigator.appVersion,10);
	}
	/** **/
	var sWidth=window.screen.width;
	var sHeight=window.screen.height; //600
	var use='pro';
	
	if((browserName=='IE' && majorVersion<'7') || (browserName=='SFM') || sHeight<600)
	{
		if(document.getElementById('selectWC') && document.getElementById('selectWC').value=='pro')
		{
			document.getElementById('selectWC').style.display="none";
			document.getElementById('selectWC').name='to_nojs';
			document.getElementById('selectWC').id='selectWC_js';
			document.getElementById('selectWC_nojs').style.display="block";
			document.getElementById('selectWC_nojs').name='to';
			document.getElementById('selectWC_nojs').id='selectWC';
			document.getElementById('otherInterfaceJS').style.display="none";
			document.getElementById('otherInterface').style.display="block";
		}
	}
	else
	{
		if(document.getElementById('selectWC'))
		{
			document.getElementById('otherInterfaceJS').style.display="block";
			document.getElementById('otherInterface').style.display="none";
		}
	}
	
	if(document.getElementById('loginForm'))
	{
		document.getElementById('loginForm').onsubmit=function()
		{
			// if no username is entered, username field is focused and login is interrupted
			if (document.getElementById('inputUsername').value=='')
			{
				document.getElementById('inputUsername').focus();
				return false;
			}
			// if no password is entered, password field is focused and login is interrupted
			if (document.getElementById('inputPassword').value=='')
			{
				document.getElementById('inputPassword').focus();
				return false;
			}
			/* encode pwd */
			var time=Math.floor(new Date().getTime()/1000);
			if (document.getElementById('time'))
			{
				var newTime=getData(document.getElementById('baseMorseCode').value+'server/login/shortcuts.php?t&'+time);
				if(newTime){time=newTime;}
				else{time=document.getElementById('time').value;}
			}
			document.getElementById('inputPassword').value='p='+urlencode(document.getElementById('inputPassword').value)+'&t='+time;
			/**/
			
			/* turn off IP check if pro */
			if (document.getElementById('selectWC') && document.getElementById('selectWC').value=='pro')
			{
				document.getElementById('ipcheck').value='0';
			}
			/* if loging to PDA, change some fields according to PDA needs */
			if (document.getElementById('selectWC') && document.getElementById('selectWC').value=='pda')
			{
				Login(this.name,this);
				document.getElementById('npmain').value='grid.mail';
				document.getElementById('loginForm').action=document.getElementById('self').value+"pda/index.html";
			}
			/**/
			else
			{
				Login(this.name,this);
				document.getElementById('loginForm').action=document.getElementById('self').value+"basic/index.html"+document.getElementById('filtered_query_string').value;
			}
			/**/
		}
	}
	
	return true;
}

function loginTo(where)
{
	// if no username is entered, username field is focused and login is interrupted
	if (document.getElementById('inputUsername').value=='')
	{
		//document.getElementById('inputUsername').focus();
		//return false;
		return true;
	}
	// if no password is entered, password field is focused and login is interrupted
	if (document.getElementById('inputPassword').value=='')
	{
		//document.getElementById('inputPassword').focus();
		//return false;
		return true;
	}
	document.getElementById('selectWC').value=where;
	document.getElementById('loginForm').submit();
	return false;
}

function initOnLoad(run)
{
	/*
	if (navigator.appVersion.indexOf("Mobile")!=-1 || navigator.userAgent.indexOf("Android")!=-1)
	{
		if (document.getElementById('selectWC'))
		{
			document.getElementById('selectWC').value="basic";
			document.getElementById('selectWC').style.display="none";
		}
	}
	*/
	
	// keep security timestamp updated
	if (document.getElementById('time')){setInterval(function(){document.getElementById('time').value=parseInt(document.getElementById('time').value)+10;},10000);}
	// set client's' timezone
	if(document.getElementById('ctz')){document.getElementById('ctz').value=(new Date().getTimezoneOffset())*(-1);}
	// let user delete it's username from cookies'
	if(document.getElementById('usernameDelete'))
	{
		document.getElementById('usernameDelete').onclick=function()
		{
			document.getElementById('saveFrame').src=document.getElementById('baseMorseCode').value+"server/login/shortcuts.php?d&"+Math.floor(new Date().getTime()/1000);
			document.getElementById('inputUsername').value="";
			this.style.display="none";
			document.getElementById('inputUsername').focus();
			return false;
		}
	}
	
	// eegg's
	if (document.getElementById('bodyTag')){if (document.getElementById('bodyTag').className=='grass'){document.getElementById('logoBox').style.backgroundImage='url("client/skins/default/login/images/glogo.gif")';}}
	if (document.getElementById('bodyTag')){if (document.getElementById('bodyTag').className=='b'+'o'+'o'+'b'){document.getElementById('bodyTag').className='ee104';document.getElementById('logoBox').style.backgroundImage='url("http://goo.gl/Y1Pwv")';}}
	//

	// handle language change
	if (document.getElementById('selectLanguage'))
	{
		document.getElementById('selectLanguage').onchange=function()
		{
			var lHref=(location.href+'?-').split('?');lHref=lHref[0];
			var add='';
			if(document.getElementById('autoLoginCheckbox')){if (document.getElementById('autoLoginCheckbox').checked) {add='&autoLogin=1';}}
			location.href=lHref+'?language='+document.getElementById('selectLanguage').value+'&interface='+document.getElementById('selectWC').value+'&username='+document.getElementById('inputUsername').value+add;
		}
	}
	//
	
	if (!run)
	{
		if (document.getElementById('usernameSet')) {if(document.getElementById('inputPassword')){document.getElementById('inputPassword').focus();}}
		else{document.getElementById('inputUsername').focus();}
		choose();
		/****/
		document.getElementById('jscontrol').value=1;
		/****/
	}
}
/****/
