/*	(c) 2007-2008 SWI KFT. - Minden jog fenntartva. - All rights reserved.
 // d4  vim: filetype=javascript fileencoding=latin2 fileformat=unix
 */


function WebmailLogin (form) {

	object = this;

	object.form = form;
	object.login = form.login;
	object.password = form.password;
	object.provider = form.provider;

	Event.observe(object.login, "change", object.login_onChange);
	Event.observe(object.form, "submit", object.form_onSubmit);
	Event.observe(window, "load", function(){window.setTimeout(function(){object.login_onChange()}, 200)});

}

WebmailLogin.prototype._email_re = /^([^@]*)(@([^@]*))?$/;
WebmailLogin.prototype._yahoo_re = /^yahoo\./i;

WebmailLogin.prototype.domains = new Array();
WebmailLogin.prototype.domains["citromail.hu"]	= "citrom";
WebmailLogin.prototype.domains["citrommail.hu"]	= "citrom";
WebmailLogin.prototype.domains["freemail.hu"]	= "freemail";
WebmailLogin.prototype.domains["primposta.com"]	= "prim";
WebmailLogin.prototype.domains["ak47.hu"]		= "prim";
WebmailLogin.prototype.domains["avh.hu"]		= "prim";
WebmailLogin.prototype.domains["cia.hu"]		= "prim";
WebmailLogin.prototype.domains["coder.hu"]		= "prim";
WebmailLogin.prototype.domains["cracker.hu"]	= "prim";
WebmailLogin.prototype.domains["csinibaba.hu"]	= "prim";
WebmailLogin.prototype.domains["eposta.hu"]		= "prim";
WebmailLogin.prototype.domains["fbi.hu"]		= "prim";
WebmailLogin.prototype.domains["geek.hu"]		= "prim";
WebmailLogin.prototype.domains["gyorsposta.com"]= "prim";
WebmailLogin.prototype.domains["gyorsposta.hu"]	= "prim";
WebmailLogin.prototype.domains["hello.hu"]		= "prim";
WebmailLogin.prototype.domains["irj.hu"]		= "prim";
WebmailLogin.prototype.domains["jakuza.hu"]		= "prim";
WebmailLogin.prototype.domains["kgb.hu"]		= "prim";
WebmailLogin.prototype.domains["lamer.hu"]		= "prim";
WebmailLogin.prototype.domains["levele.com"]	= "prim";
WebmailLogin.prototype.domains["levele.hu"]		= "prim";
WebmailLogin.prototype.domains["maffia.hu"]		= "prim";
WebmailLogin.prototype.domains["me-mail.hu"]	= "prim";
WebmailLogin.prototype.domains["message.hu"]	= "prim";
WebmailLogin.prototype.domains["pobox.hu"]		= "prim";
WebmailLogin.prototype.domains["primposta.com"]	= "prim";
WebmailLogin.prototype.domains["primposta.hu"]	= "prim";
WebmailLogin.prototype.domains["pro.hu"]		= "prim";
WebmailLogin.prototype.domains["programozo.hu"]	= "prim";
WebmailLogin.prototype.domains["reply.hu"]		= "prim";
WebmailLogin.prototype.domains["send.hu"]		= "prim";
WebmailLogin.prototype.domains["shotgun.hu"]	= "prim";
WebmailLogin.prototype.domains["skizo.hu"]		= "prim";
WebmailLogin.prototype.domains["sniper.hu"]		= "prim";
WebmailLogin.prototype.domains["soldier.hu"]	= "prim";
WebmailLogin.prototype.domains["theend.hu"]		= "prim";
WebmailLogin.prototype.domains["warrior.hu"]	= "prim";
WebmailLogin.prototype.domains["webmail.hu"]	= "prim";
WebmailLogin.prototype.domains["vipmail.hu"]	= "vip";
WebmailLogin.prototype.domains["index.hu"]		= "vip";
WebmailLogin.prototype.domains["totalcar.hu"]	= "vip";
WebmailLogin.prototype.domains["mailbox.hu"]	= "mailbox";
WebmailLogin.prototype.domains["gmail.com"]		= "google";
WebmailLogin.prototype.domains["omail.hu"]		= "omail.hu";

WebmailLogin.prototype.getLocalpart = function () {
	return object.login.value.replace(object._email_re, "$1").strip();
}
WebmailLogin.prototype.getDomain = function () {
	return object.login.value.replace(object._email_re, "$3").strip().toLowerCase();
}

WebmailLogin.prototype.login_onChange = function (event) {
	try {
		var key = object.getDomain();
		if ( key ) {
			if ( key in object.domains )
				object.provider.value = object.domains[key];
			else if ( key.match(object._yahoo_re) ) 
				object.provider.value = "yahoo";
		}
	} catch (e) {}
	return;
}

WebmailLogin.prototype.do_login = function (url, params) {
	var form = document.createElement("FORM");
	Element.hide(form);
	form.setAttribute("action", url);
	form.setAttribute("method", "POST");
	form.setAttribute("target", "_blank");
	for ( var i in params ) {
		var inp = document.createElement("INPUT");
		inp.setAttribute("type", "hidden");
		inp.setAttribute("name", i);
		if ( params[i] != null )
			inp.setAttribute("value", params[i]);
		form.appendChild(inp);
	}
	document.body.appendChild(form);
	form.submit()
	document.body.removeChild(form);
	object.login.value = '';
	object.password.value = '';
	return true;
}

WebmailLogin.prototype.form_onSubmit = function (event) {
	Event.stop(event);
	if ( !(object.login.value.strip().length && object.password.value.length && object.provider.value.strip().length) ) {
		window.alert("A bejelentkezéshez kérjük adja meg a felhasználói nevét,\njelszavát, és válassza ki megfelelő szolgáltatást a listából!");
		return;
	}
	var action = "";
	var form = {};
	switch ( object.provider.value ) {
		case "citrom":
			action = "http://www.citromail.hu/index.vip";
			form["user"] = object.getLocalpart();
			form["passwd"] = object.password.value;
			form["ip"] = "1";
			break;
		case "freemail":
			action = "https://belepes.t-online.hu/auth.html";
			form["cmd"] = "auth";
			form[".formId"] = "commands.Auth";
			form["backurl"] = "http://freemail.hu/fm/auth2";
			form["remoteform"] = "1";
			form["rem"] = null;	// client ip
			form["userwithoutdomain"] = null;
			form["user"] = object.getLocalpart() + "@freemail.hu";
			form["pass"] = object.password.value;
			break;
		case "prim":
			action = "http://posta.prim.hu/extlogin.prm";
			form["user"] = object.getLocalpart();
			form["server"] = object.getDomain();
			form["pass"] = object.password.value;
			form["inprogress"] = "w8";
			form["lang"] = "hu";
			form["jscheck"] = "1";
			form["button"] = "Kérem, várjon...";
			form["cookiesec"] = "on";
			break;
		case "vip":
			action = "http://pass.inda.hu/";
			form["op"] = "login";
			form["__destination_url"] = "http://pass.inda.hu//?op=logincheck&dest=http%3A%2F%2Fvipmail.hu%2F";
			form["email"] = object.getLocalpart() + "@vipmail.hu";
			form["pwd"] = object.password.value;
			form["ip"] = "1";
			break;
		case "mailbox":
			action = "http://vizsla.mailbox.hu/atmail.pl";
			form["pop3host"] = "mailbox.hu";
			form["MailServer"] = null;
			form["MailType"] = "pop3";
			form["sc"] = "mailbox";
			form["username"] = object.getLocalpart();
			form["password"] = object.password.value;
			form["LoginType"] = "simple";
			form["Language"] = null;
			break;
		case "myvip":
			var now = new Date();
			var tst = Math.floor(now.getTime()/1000);
			action = "http://myvip.com/index.php?";
			form["mode"] = "0";
			form["passfield"] = "pass" + tst;
			form["email"] = object.login.value.strip();
			form["pass"+tst] = object.password.value;
			break;
		case "iwiw":
			action = "http://iwiw.hu/pages/user/login.jsp?method=Login";
			form["email"] = object.login.value.strip();
			form["password"] = object.password.value
			form["autologin"] = "false";
			form["forgetemail"] = "false";
			break;
		case "yahoo":
			action = "https://login.yahoo.com/config/login?";
			form[".tries"] = "1";
			form[".src"] = "ym";
			form[".md5"] = null;
			form[".hash"] = null;
			form[".js"] = null;
			form[".last"] = null;
			form["promo"] = null;
			form[".intl"] = "us";
			form[".bypass"] = null;
			form[".partner"] = null;
			form[".u"] = null;	// foo
			form[".v"] = "0";
			form[".challenge"] = null; // bar
			form[".yplus"] = null;
			form[".emailCode"] = null;
			form["pkg"] = null;
			form["stepid"] = null;
			form[".ev"] = null;
			form["hasMsgr"] = "0";
			form[".chkP"] = "Y";
			form[".done"] = "http://mail.yahoo.com";
			form[".pd"] = "ym_ver=0";
			form["login"] = object.getLocalpart();
			form["passwd"] = object.password.value;
			form[".persistent"] = "y";
			form[".save"] = "Sign In";
			break;
		case "google":
			action = "https://www.google.com/accounts/ServiceLoginAuth";
			form["ltmpl"] = "ps_yj_blanco";
			form["ltmplcache"] = "2";
			form["continue"] = "http://mail.google.com/mail/?";
			form["service"] = "mail";
			form["rm"] = "false";
			form["ltmpl"] = "ps_yj_blanco";
			form["Email"] = object.getLocalpart();
			form["Passwd"] = object.password.value;
			form["rmShown"] = "1";
			break;
		case "omail.hu":
			domain = object.getDomain() ? object.getDomain() : object.provider.value;
			action = "http://www." + domain + "/SAML2/glogin";
			form["username"] = object.getLocalpart();
			form["password"] = object.password.value;
			form["ServiceURL"] = "https://www.google.com/a/" + domain + "/acs";
			form["RelayState"] = "https://www.google.com/a/" + domain + "/ServiceLogin?service=mail&passive=true&rm=false&continue=http%3A%2F%2Fmail.google.com%2Fa%2Fomail.hu%2F&ltmpl=default&ltmplcache=2";
			break;
		default:
			return false;
	}
	return object.do_login(action, form);
}


