﻿//////////////////////////////////////////////////////////////////
// login.js
//
// David Yang (yang@levensoft.com)
// Copyright (C) Levensoft Co., Ltd. (www.levensoft.com)
//
// 2006.11.22
//////////////////////////////////////////////////////////////////

var login = new Object();
login.serviceObject = new Object();
login.register = function(panel, url)
{
    login.serviceObject.name = "login";
    
    login.panel = panel;
    login.signupurl = url;
};
login.checkkey = function()
{
	var e = EventUtil.getEvent();
	var o = login.panel;
	
	if (o.account.value.length > 0 && o.password.value.length > 0 && e.keyCode == 13)
	{
		login.signin();
	}
};
login.signin = function()
{
    if (! login.panel) return;
    
	var form = new Levensoft.JS.Form(login.panel);
	var xml = form.toXML(login.serviceObject.name);

	util.openMessaging(gMessage.SIGNIN_MESSAGE);
	webServiceFramework.initialize("LevenSiteService");
	webServiceFramework.registerHandler(login.__signinCallback);
	webServiceFramework.callService("LevenSiteService", "Signin", 1, util.htmlEncode(xml.toString()));
};
login.__signinCallback = function(o)
{
	webServiceFramework.unregisterHandler();
    
    if (typeof(o) == "object")
    {
	    var xmlString = o.firstChild.nodeValue;
	    var doc = util.getXmlDocument();
	    doc.async = false;
	    doc.loadXML(xmlString);
	    if (doc.parseError.errorCode != 0)
	    {
	        util.errorMessaging(doc.parseError.reason);
	        return;
        }

        o = doc.firstChild.firstChild;
        if (o.nodeName == "url")
        {
            location.href = o.text;
        }
        else if (o.nodeName == "panel")
        {
            login.panel.parentElement.outerHTML = o.xml;
        }
    }
};
login.signout = function()
{
	util.openMessaging(gMessage.SIGNOUT_MESSAGE);
	webServiceFramework.initialize("LevenSiteService");
	webServiceFramework.registerHandler(login.__signoutCallback);
	webServiceFramework.callService("LevenSiteService", "Signout", 0, "");
};
login.__signoutCallback = function(o)
{
    webServiceFramework.unregisterHandler();
    
    location.href = "/";
};

login.signup = function()
{
	location.href = login.signupurl;
};

if (util) util.attachUnloadEventHandler(login.__unloadHandler);

login.__unloadHandler = function()
{
    login.serviceObject = null;
	login = null;
};

// register
var register = new Object();
register.checkaccount = function(o)
{
    var account = o.form.account.value;
    if (account == "") return;
    
	util.openMessaging(gMessage.READING_DATA_MESSAGE);
	webServiceFramework.initialize("LevenSiteService");
	webServiceFramework.registerHandler(register.__checkaccountCallback);
	webServiceFramework.callService("LevenSiteService", "CheckAccount", 1, account);
};
register.__checkaccountCallback = function(o)
{
    webServiceFramework.unregisterHandler();
    
    var info = o;
    if (typeof(o) == "object") info = o.firstChild.nodeValue;
    
    var registerCheckIcon = document.getElementById("registerCheckIcon");
    registerCheckIcon.style.display = "";
    var img = "";
    if (info == "ok")
    {
        img = "<img src=\"" + registerCheckIcon.getAttribute("right") + "\" alt=\"\" />";
    }
    else
    {
        img = "<img src=\"" + registerCheckIcon.getAttribute("wrong") + "\" alt=\"\" />";
        img += "<span style=\"position:relative;top:-2px;left:0px;padding-left:3px;color:red\">" + info + "</span>";
    }
    registerCheckIcon.innerHTML = img;
};
register.doregister = function(o)
{
	var form = o.form;
	if (!register.validateAccount(form.account.value, 3))
	{
		form.account.focus();
		util.errorMessaging(gMessage.ACCOUNT_ERROR_MESSAGE);
		return;
	}
	if (!register.validatePassword(form.password.value, form.confirmpassword.value, 3, 10))
	{
		form.password.focus();
		util.errorMessaging(gMessage.PASSWORD_ERROR_MESSAGE);
		return;
	}
	if (form.nick && form.nick.type != "hidden" && form.nick.value == "")
	{
		form.nick.focus();
		util.errorMessaging(gMessage.NICK_EMPTY_MESSAGE);
		return;
	}
	
	if (form.name && form.name.value == "")
	{
		form.name.focus();
		util.errorMessaging(gMessage.NAME_EMPTY_MESSAGE);
		return;
	}
	if (form.companyName && form.companyName.value == "")
	{
		form.companyName.focus();
		util.errorMessaging(gMessage.COMPANYNAME_EMPTY_MESSAGE);
		return;
	}
	if (form.telephone && form.telephone.value == "")
	{
		form.telephone.focus();
		util.errorMessaging(gMessage.TELEPHONE_EMPTY_MESSAGE);
		return;
	}
	if (form.mobile && form.mobile.value == "")
	{
		form.mobile.focus();
		util.errorMessaging(gMessage.MOBILE_EMPTY_MESSAGE);
		return;
	}
	if (form.email && form.email.value == "")
	{
		form.email.focus();
		util.errorMessaging(gMessage.EMAIL_EMPTY_MESSAGE);
		return;
	}
	
	if (form.agreement && !form.agreement.checked)
	{
		form.agreement.focus();
		util.errorMessaging(gMessage.REGISTER_AGREEMENT_ERROR);
		return;
	}
	
	form.submit();
};

register.password = function(o)
{
    var form = o.form;
    
	if (!register.validatePassword(form.password.value, form.confirmpassword.value, 3, 10))
	{
		form.password.focus();
		util.errorMessaging(gMessage.PASSWORD_ERROR_MESSAGE);
		return;
	}
	
	form.submit();
};

register.validateAccount = function(v, len)
{
	if (v == "" || v.length < len)
	{
		return false;
	}
	
	return true;
};
register.validatePassword = function(p1, p2, min, max)
{
	if (p1 == "" || p1 != p2 || p1.length < min || p1.length > max)
	{
		return false;
	}
	
	return true;
};

