var stateName = "none";
var agt = navigator.userAgent.toLowerCase();
var is_major = parseInt(navigator.appVersion);
var is_minor = (parseFloat(navigator.appVersion) - is_major) * 10;
var is_win	= ((agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1));
var rvPos = (agt.indexOf(' rv:'));
var is_moz14up = (rvPos >0) && (parseFloat(agt.substr(rvPos+4)) >= 1.4);
var is_notcomp = (agt.indexOf('spoofer')!=-1) || (agt.indexOf('opera')!=-1) || (agt.indexOf('webtv')!=-1) || (agt.indexOf('hotjava')!=-1);
var is_nav  = (agt.indexOf('mozilla')!=-1) && !is_notcomp;
var ie_varpos = agt.indexOf("msie");
var nav_version   = (navigator.vendorSub ? parseInt(navigator.vendorSub) + parseFloat(navigator.vendorSub.substr(2)) / 10 : 0);
var is_nav6 		= (is_nav && (navigator.vendor == "Netscape6"));
var is_nav7 		= (is_nav && (nav_version >= 7));
var is_nav71up		= (is_nav && (nav_version >= 7.1));
var is_ie = ((ie_varpos != -1) && (agt.indexOf("opera") == -1));
var is_ie55up = is_ie && (parseFloat(agt.substr(ie_varpos+5)) >= 5.5);
var is_ie5down = is_ie && (parseFloat(agt.substr(ie_varpos+5)) < 5.5);
var is_khtml = ((agt.indexOf("konqueror")!=-1) || (agt.indexOf("safari")!=-1) );
var is_partialcompatible = is_khtml || (nav_version >= 6.23) && (nav_version < 7.1);
var is_chrome = (agt.indexOf("chrome")!=-1);
var is_fullycompatible = ( ((is_ie55up || is_moz14up || is_nav71up) && !is_notcomp && !is_khtml) || is_chrome );

function doInitialRedirect()
{
	errCodURL = "?";
	if (forgotPass && forgotPass.length)
		errCodURL += "forgotPassword=1&"
	if (errorCode && errorCode.length)
		errCodURL += "errorCode=" + errorCode + "&";
	if (errCodURL.length <= 1) errCodURL = "";

	if ((window != window.parent) && (window.name != "logthing") && (window.name != "login"))
		window.parent.location.replace(window.location.href);
	else if ((window.name != "logthing") && (window.name != "login"))
		window.parent.location.replace("welcome.wssp" + errCodURL);
	else if (window.location.href.indexOf("wssp") > 0)
		window.parent.location.replace("/" + errCodURL);
	else if ((window.name == "logthing") && (errorCode != ""))
		window.location.replace("/");
}

function doErrCode()
{
	if (errorCode == "")
		if (parent.location.href.indexOf("errorCode") > 0)
			errorCode = parent.location.href.substr(parent.location.href.indexOf("errorCode") + 10);

	forgotPass = ((forgotPass != "") || parent.location.href.indexOf("forgotPassword") > 0);

	if (errorCode != "")
	{
		errorCode = "&nbsp;&nbsp;&nbsp;" + unescape(errorCode).replace("&","");

		if (is_khtml)
			errorCode = "<br>" + errorCode;
		else
			errorCode = errorCode + "<br>";

		document.getElementById("errCode").innerHTML = errorCode;
		document.getElementById("errCodeDiv").style.display="block";
	}
}


function doleances()
{
	if (!is_fullycompatible)
	{
		document.write(doleancesBeg);
		if (is_partialcompatible)
			document.write(doleancesKHT);
		else
			document.write(doleancesMsg);
		document.write(doleancesEnd);
	}
}

function doLogin(form)
{
	if (!form.no_username.value.length || !form.no_password.value.length)
	{
		alert(PleaseEnterP);
		return false;
	}

	var newWin = form.newwin.checked;
	if (newWin)
	{
		window.open('',"yourmail",'menubar=0,toolbar=0,resizable=1,scrollbars=0,status=1,toolbar=0,fullscreen=0');
		form.target = "yourmail";
	}
  	else form.target = "_top";

	form.username.value = form.no_username.value;
	form.password.value = form.no_password.value;

	if (UseDomainSelector && (form.username.value.indexOf("@") < 0))
		form.username.value += document.getElementById("domainselector").value;

	if (newWin)
		form.no_password.value='';

	return true;
}

function getBaseHref(win)
{
	var txt = win.location.href;
	var maxPos = txt.lastIndexOf("/") +1;
	return txt.substr(0, maxPos);
}

function step()
{
	var iframe = parent.frames[1];
	switch(stateName)
	{
		case "pre":
		{
			var myskn = document.getElementById("SkinName");

			while(myskn.length > 0) myskn.removeChild(myskn.childNodes[0]);
			for (var i = 0; i < PrePopulateWith.length; i++)
			{
				var node = document.createElement("OPTION");
				node.value = PrePopulateWith[i][0];
				if (!is_ie5down)
				{
					node.innerHTML = PrePopulateWith[i][1];
					myskn.appendChild(node);
				}
				else
				{
					node.text = PrePopulateWith[i][0];
					myskn.add(node);
				}
			}
			myskn.disabled=false;
			document.getElementById("pop").value = btnSelectSkn;
			stateName = "none";
			break;
			
			//CARMELO//
			//if (!is_fullycompatible)
				//myskn = "WASSP";
		}

		case "none":
		{
			var form0 = document.forms[0];
			var form1 = document.forms[1];
			if ((form0.no_username.value=="") || (form0.no_password.value==""))
				alert(PleaseEnterP);
			else
			{
				form1.username.value=form0.no_username.value;
				if (UseDomainSelector && (form1.username.value.indexOf("@") < 0))
					form1.username.value += document.getElementById("domainselector").value;
				form1.password.value=form0.no_password.value;
				form1.submit();
				stateName = "login";
				setTimeout("step()", 400);
			}
			break;
		}

		case "login":
			if ((iframe.location.href.indexOf("DisableIPWatch") < 0) && (iframe.location.href.indexOf("empty") < 0))
			{
				if (iframe.location.href.search(/\/Session\//i) < 0)
				{
					iframe.location.href = "empty.wssp";
					alert(WrongUserPwd);
					stateName="none";
					return;
				}
				else
				{
					iframe.location.href = getBaseHref(iframe) + "settings.wssp";
					if (PrePopulateSkinChooser)
						stateName="update";
					else
						stateName="fetch";
				}
			}
			setTimeout("step()", 400);
			break;

		case "fetch":
			if (iframe.document)
			{
				var skn = iframe.document.getElementsByName("SkinName")[0];
				if (skn && (skn.options.length > 0))
				{
					var myskn = document.getElementById("SkinName");
					while(myskn.length > 0) myskn.removeChild(myskn.childNodes[0]);

					for (var i =0; i<skn.options.length; i++)
					{
						var node = document.createElement("OPTION");
						node.value=skn.options[i].value;
						if (!is_ie5down)
						{
							node.innerHTML=skn.options[i].innerHTML;
							myskn.appendChild(node);
						}
						else
						{
							node.text=skn.options[i].text;
							myskn.add(node);
						}
					}
					myskn.disabled=false;
					document.getElementById("current").innerHTML = CurSetting + skn.options[skn.selectedIndex].text;
					setTimeout("document.getElementById('SkinName').selectedIndex = " + skn.selectedIndex, 100);
					document.getElementById("pop").value=btnSelectSkn;
					stateName="update";
					return;
				}
			}
			setTimeout("step()", 400);
			break;

		case "update":
		{
			var myskn = document.getElementById("SkinName");
			if (iframe.document)
			{
				var skn = iframe.document.getElementsByName("SkinName")[0];
				if (skn)
				{
					skn.selectedIndex = myskn.selectedIndex;
					skn.form.action = "?Update=";
					skn.form.submit();
					stateName="logout";
				}
			}
			setTimeout("step()", 1000);
			break;
		}

		case "logout":
		{
			iframe.location.href = getBaseHref(iframe) + "bye.wssp";
			document.getElementById('pop').value = DoneClickRet;
			document.getElementById('SkinName').disabled = document.getElementById('pop').disabled=true;
			document.getElementById('current').innerHTML='';
			stateName="done";
			setTimeout("step()", 1000);
			break;
		}
		case "done":
		{
			iframe.location.href = "empty.wssp";
		}
	}
}

function restoreToTop()
{
	if (window != window.parent)
	{
		document.forms[0].target="_top";
		document.forms[0].no_username.value="";
		document.forms[0].no_password.value="";
		document.forms[0].submit();
	}
}

function doHide(elem)
{
	elem=document.getElementById(elem);
	if (elem) {
		elem.style.visibility = "hidden";
		elem.style.display = "none";
		elem.innerHTML = "";
		if (!is_khtml) elem.innerText = "";
	}
}

function doFillDomainSelector()
{
	var domsel = document.getElementById("domainselector");
	while(domsel.length > 0) domsel.removeChild(domsel.childNodes[0]);
	for (var i =0; i<AvailableDomains.length; i++)
	{
		var node = document.createElement("OPTION");
		node.value="@"+AvailableDomains[i];
		if (!is_ie5down)
		{
			node.innerHTML="@"+AvailableDomains[i];
			domsel.appendChild(node);
		}
		else
		{
			node.text="@"+AvailableDomains[i];
			domsel.add(node);
		}
	}
}

function tryAutoSwitchToSSL()
{
	if (AutoSwitchToSSL)
	{
		var url = window.location.href;
		var pos = url.substr(9).indexOf("/") + 9;
		var pre = "https" + url.substr(0, pos).substr(4);
		url = url.substr(pos);
		if (AutoSwitchUsePort)
		{
			var portPos = pre.substr(9).indexOf(":");
			if (portPos > 0) pre = pre.substr(0,portPos+9);
			pre += ":" + AutoSwitchUsePort;
		}
		else pre = AutoSwitchUsePrefix;
		window.location.replace(pre + url);
	}
}

function prepareLoginPage()
{
	if (window.name == "login")
	{
		try {
			parent.document.title=window.document.title;
		} catch (a) {}
		document.getElementById('frm').no_username.focus();
	}

	doErrCode();

	if ((is_fullycompatible || is_nav6) && (window.parent.name != "yourmail"))
	{
		document.forms[0].newwin.disabled=false;
		document.forms[0].newwin.checked = AutoCheckPopNewWindow;
	}

	if (DontShowCertificate) doHide("cert");
	if (DontShowPasswordRecovery || !forgotPass) doHide("fpas");
	if (DontShowDirectory) doHide("dire");
	if (DontShowLists) doHide("list");
	if (DontShowSignup) doHide("sign");
	if (DontShowMailToPostmaster) doHide("post");

	if (is_nav6)
	{
		var df = document.forms[0];
		df.newwin.style.border = df.DisableIPWatch.style.border = df.DisableUseCookie.style.border = "1px solid #808080";
		df.newwin.style.height = df.DisableIPWatch.style.height = df.DisableUseCookie.style.height = "14px";
		document.getElementById('domainselector').style.border = "1px solid #808080";
		document.getElementById('SkinName').style.border = "1px solid #808080";

	}
}

function getBase64Code(str, pos)
{
   var code = str.charCodeAt(pos);
   if ((code >= 65) && (code <= 90))  return code - 65;
   if ((code >= 97) && (code <= 122)) return code - 71;
   if ((code >= 48) && (code <= 57))  return code +  4;
   if (code == 43) return 62;
   if (code == 47) return 63;
   return 0;
}

function decodeBase64(str)
{
	var txt = "";
	for (var i = 0; i < str.length; i+=4)
	{
		var chs = [getBase64Code(str,i+0),getBase64Code(str,i+1),getBase64Code(str,i+2),getBase64Code(str,i+3)];
	   var tot0 = ((chs[0] << 2) + (chs[1] >> 4)) % 256;
	   var tot1 = ((chs[1] << 4) + (chs[2] >> 2)) % 256;
	   var tot2 = ((chs[2] << 6) + (chs[3] >> 0)) % 256;
	   txt += (tot0>0 ? String.fromCharCode(tot0):"") + (tot1>0 ? String.fromCharCode(tot1):"") + (tot2>0 ? String.fromCharCode(tot2):"");
	}
   return txt;
}

function decodeUTF8(str)
{
	var txt = "";
	for (var i = 0; i < str.length; i++)
	{
		var bcount = 0;
		var res = str.charCodeAt(i);
		while(((res << bcount++) & 0x80) != 0);
		res &= (0xFF >> bcount);

		for( var c = 2; c < bcount; c++)
	   	res = (res << 6) | (str.charCodeAt(++i) & 0x3F);
	   txt += String.fromCharCode(res);
	}
   return txt;
}

function showComposedMessage()
{
	if (document.forms[0].restoreSessionPage)
	{
		if (!document.forms[0].restoreSessionPage.value.toLowerCase().indexOf("compose.wssp"))
		{
			var pText = document.forms[0].Body ? decodeUTF8(decodeBase64(document.forms[0].Body.value)) : "";
			var pSubj = document.forms[0].Subject ? decodeUTF8(decodeBase64(document.forms[0].Subject.value)) : "";
			var pTo   = document.forms[0].To ? decodeUTF8(decodeBase64(document.forms[0].To.value)) : "";
			var pCc   = document.forms[0].Cc ? decodeUTF8(decodeBase64(document.forms[0].Cc.value)) : "";
			var pBcc  = document.forms[0].Bcc ? decodeUTF8(decodeBase64(document.forms[0].Bcc.value)) : "";
			if (pText.length + pSubj.length + pTo.length + pCc.length + pBcc.length > 0)
			{
				document.getElementById("WasComposing").style.visibility = "visible";
				document.getElementById("BodyText").value =
					"To: "  + pTo + "\n" +
					(pCc.length  ? "Cc: "  + pCc + "\n" : "") +
					(pBcc.length ? "Bcc: " + pBcc + "\n" : "") +
					"Subject: " + pSubj + "\n\n" +
					pText;
			}
		}
		else
		{
			if (window != window.parent)
				window.parent.location.href=window.location;
		}
	}
}
