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 processLogin(pwd)
{
	if(window.loginInterval){clearInterval(window.loginInterval);}
	
	if (pwd)
	{
		initPRO(getPROData(pwd));
	}
	else
	{
		initPRO(getPROData());
	}
}

function proLogin(pwd)
{
	if (document.getElementById('selectWC') && document.getElementById('selectWC').confirmed)
	{
		processLogin(pwd);
	}
	else
	{
		var pwd=pwd;
		if (!window.loginInterval)
		{
			window.loginTime=Math.floor(new Date().getTime()/1000);
			window.loginInterval=setInterval(function() {proLogin(pwd);},500);
		}
		else
		{
			if (window.loginTime)
			{
				var time=Math.floor(new Date().getTime()/1000);
				if ((window.loginTime+5)<time)
				{
					if(window.loginInterval){clearInterval(window.loginInterval);}
					alert(document.getElementById('lang-login_screen-js_problem').value);
				}
			}
		}
	}
}

function Login(sKey,form,b)
{
	var dPwd = document.getElementById('inputPassword');
	var sPwd = dPwd.value;
	//if(form.cipher.checked){
		//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 = '*****';
	//}
	return true;
}

function getPROData(pwd)
{
	if (!pwd)
	{
		var pwd=document.getElementById('inputPassword').value;
	}
	
	var name=document.getElementById('inputUsername').value;
	if (name=='') {name='***';}
	var aLogin=0;
	if (document.getElementById('autoLoginCheckbox') && document.getElementById('autoLoginCheckbox').checked) {aLogin=1;}

	if (document.getElementById('selectLanguage'))
	{
		var lang=document.getElementById('selectLanguage').value;
	}
	else
	{
		var lang='';
	}

	if (pwd.search('i=')==0)
	{
		return {
			back:{
				username:document.getElementById('inputUsername').value,
				language:lang,
				interface:document.getElementById('selectWC').value
			},
			username:name,
			auto_digest:pwd,
			language:lang,
			auto_login:aLogin,
			disable_ip_check:!document.getElementById('ipcheck').checked,
			get:window.get
		};
	}
	else
	{
		return {
			back:{
				username:document.getElementById('inputUsername').value,
				language:lang,
				interface:document.getElementById('selectWC').value
			},
			username:name,
			password:pwd,
			language:lang,
			auto_login:aLogin,
			disable_ip_check:!document.getElementById('ipcheck').checked,
			get:window.get
		};
	}
}

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) {
	 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);
	}
	
	//alert('Browser name  = '+browserName);
	//alert('Major version = '+majorVersion);
	//alert('Full version  = '+fullVersion+'<br>');
	//alert('navigator.appName = '+navigator.appName+'<br>');
	//alert('navigator.userAgent = '+navigator.userAgent+'<br>');

/** **/
	var use='pro';
	if (browserName=='IE' && majorVersion<'7')
	{
		use="basic";
	}
	
	if (use=='pro') {addStartScript();}
	
	if (document.getElementById('preselectedInterface') && document.getElementById('preselectedInterface').value!='')
	{
		use=document.getElementById('preselectedInterface').value;
	}
	
	//alert(use+" "+OSName+' ** '+navigator.userAgent);
	
	if(document.getElementById('selectWC')){document.getElementById('selectWC').value=use};
	
	if(document.getElementById('loginForm'))
	{
		document.getElementById('loginForm').onsubmit=function()
		{
			if (document.getElementById('inputPassword').value=='')
			{
				document.getElementById('inputPassword').focus();
				return false;
			}
			
			if (document.getElementById('selectWC').value=='pro')
			{
				document.getElementById('ipcheck').value='0';
			}
			
			if (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 if (document.getElementById('selectWC').value=='pro')
			{
				proLogin(document.getElementById('inputPassword').value);
				
				if(document.getElementById('inputPassword')){document.getElementById('inputPassword').value=''};
				return false;
			}
			else
			{
				Login(this.name,this);
				document.getElementById('loginForm').action=document.getElementById('self').value+"basic/index.html";
			}
		}
	}
	
	return true;
}


function addStartScript()
{
	var ss=false;
	var scr=document.getElementsByTagName('script');
	for(var i=0; i<scr.length; i++)
	{
		if (scr[i].src.search('startscript')>=0)
		{
			ss=true;
		}
	}
	
	if (!ss)
	{
		var headID = document.getElementsByTagName("head")[0];
		var newScript = document.createElement('script');
		newScript.type = 'text/javascript';
		newScript.src = 'client/inc/startscript.js';
		headID.appendChild(newScript);
	}
}

function initOnLoad(run)
{
	if(document.getElementById('ctz')){document.getElementById('ctz').value=(new Date().getTimezoneOffset())*(-1);}
	
	if(document.getElementById('usernameDelete'))
	{
		document.getElementById('usernameDelete').onclick=function()
		{
			document.getElementById('saveFrame').src="?d";
			document.getElementById('inputUsername').value="";
			this.style.display="none";
			document.getElementById('inputUsername').focus();
			return false;
		}
	}
	
	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('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;
		/****/
		if(document.getElementById('selectWC'))
		{
			document.getElementById('selectWC').onchange=function(){
				if (document.getElementById('selectWC').value=='pro' && !window.sjs)
				{
					addStartScript();
					window.sjs=true;
				}
			};
			if (document.getElementById('selectWC').value=='pro' && !window.sjs)
			{
				addStartScript();
				window.sjs=true;
			}
		}
	}
	else
	{
		initPRO(getPROData());
	}
}
/****/
