/**
 * @author tlee
 ajaxbase.js is required
 This js is for the login status control
 */

function StatusBreakJSON(){
    counter = 1;
    this.noCacheIE = '&noCacheIE=' + (new Date()).getTime();
    this.head = document.getElementsByTagName("head").item(0);
    this.scriptId = 'JscriptId' + counter++;    

    StatusBreakJSON.prototype.sendBegin = function(url, callback){      
        url += (url.indexOf("?") == -1) ? "?callback=" : "&callback=";
        url += callback;
        url += this.noCacheIE;
        this.script = document.createElement("script");
        this.script.setAttribute("type", "text/javascript");
        this.script.setAttribute("charset", "utf-8");
        this.script.setAttribute("src", url);
        this.script.setAttribute("id", this.scriptId);
        this.head.appendChild(this.script);
    }
}

var	loginstatus_ckMemberAuthentication;
var	loginstatus_ckNewMessageCount;
var	loginstatus_ckNickname;
var	loginstatus_etLoginStatus; 
var	loginstatus_etStatusMessage;
var	loginstatus_personalUrl;
var	loginstatus_loginUrl;
var	loginstatus_logoutUrl;
var	loginstatus_registerUrl;
var	loginstatus_myMessageUrl;
var	loginstatus_cookieSecExpire;
var loginstatus_isBreakLinux;

function VarsInit()
{
	loginstatus_ckMemberAuthentication = "MemberAuthentication";
	loginstatus_ckNewMessageCount = "NewMessageCount";
	loginstatus_ckNickname  = "Nickname";
	loginstatus_etLoginStatus = "login_status"; 
	loginstatus_etStatusMessage = "status_message";
	loginstatus_personalUrl = "http://my.break.com/Member/Profile/mypage.aspx?MemberNickName=";
	loginstatus_loginUrl = "http://my.break.com/Member/Authentication/login.aspx";
	loginstatus_logoutUrl = "http://my.break.com/Member/Authentication/Logout.aspx";
	loginstatus_registerUrl = "http://my.break.com/Member/Authentication/Registration.aspx";
	loginstatus_myMessageUrl = "http://my.break.com/Member/Profile/MyMessage.aspx";
	loginstatus_cookieSecExpire = 300;
	loginstatus_isBreakLinux = false;
}

function MemberSummaryInit()
{
    VarsInit();	
    if(GetCookie(loginstatus_ckMemberAuthentication) != "")
    {
        var DataVal = GetCookie("MemberData");
        if(DataVal == "")
        {
            AuthRedirect();   
        }
        else
        {
            PopulateData();
        }
    }
    else
    {
	    document.getElementById(loginstatus_etLoginStatus).innerHTML = RenderGuestLoginStatus();
    }
}

//Get the message count directly from ws
function SetMessageCount(msgCount)
{
    VarsInit();
    if(GetCookie(loginstatus_ckMemberAuthentication) != "")
    {
        var DataVal = GetCookie("MemberData");
        if(DataVal != "")
        {
            var memberId = getMemberId();
            if(memberId.length > 0) // cookie existed
            {
                var nickname = GetNicknameFromCookie();
                if(loginstatus_isBreakLinux == true)
                {
	                document.getElementById(loginstatus_etLoginStatus).innerHTML = RenderLoggedInUserStatus(nickname, -1);
                }
                else
                {
                    document.getElementById(loginstatus_etLoginStatus).innerHTML = RenderLoggedInUserStatus(nickname, msgCount);
                    SetCookie(loginstatus_ckNewMessageCount, msgCount, SecondsFromNow(loginstatus_cookieSecExpire));
                }
            }
            else					// cookie not existed
            {
                // use just see guest login
                document.getElementById(loginstatus_etLoginStatus).innerHTML = RenderGuestLoginStatus();
            }
        }
    }
    else
    {
	    document.getElementById(loginstatus_etLoginStatus).innerHTML = RenderGuestLoginStatus();
    }
}

function PopulateData()
{
    var memberId = getMemberId();
    if(memberId.length > 0) // cookie existed
    {
        var nickname = GetNicknameFromCookie();
		if(loginstatus_isBreakLinux == true)
	    {
		   document.getElementById(loginstatus_etLoginStatus).innerHTML = RenderLoggedInUserStatus(nickname, -1);
	    }
	    else
	    {
            if(GetCookie(loginstatus_ckNewMessageCount) == "")
	        {
	            document.getElementById(loginstatus_etLoginStatus).innerHTML = RenderLoggedInUserStatus(nickname, 0);    
	            GetMessageCountWS(memberId);	
	        }
	        else
	        {
	            var newMessageCount = GetCookie(loginstatus_ckNewMessageCount);	
	            document.getElementById(loginstatus_etLoginStatus).innerHTML = RenderLoggedInUserStatus(nickname, newMessageCount);
	        }
	    }
    }
    else	// cookie not existed
    {
	    // use just see guest login
	    document.getElementById(loginstatus_etLoginStatus).innerHTML = RenderGuestLoginStatus();
    }
}

function getMemberId()
{
    var result = "";
    var cookie = document.cookie;
    var index = cookie.search(/MemberID=/gi);
    if(index >= 0)
    {
        mid = cookie.substr(index+9, cookie.length);
	    index = mid.indexOf(";");
	    if(index >= 0)
	        result = mid.substr(0, index);
	    else
	        result = mid;	
	}
	return result;    
}

function GetMessageCountWS(mid)
{ 
    if(mid.length > 0 )
    {   
        var loginstatus_MessageJSON = new StatusBreakJSON(); 
        loginstatus_MessageJSON.sendBegin("http://profile-websvc.break.com/Membership/Handlers/Messages/MessageHandler.ashx?invoke=getmembermessagecount&siteId=1&mid="+mid, "HandleMessageCount");
    }    
}

function HandleMessageCount(jsonData)
{
    if(jsonData && jsonData.Response.Code == 0)
    {
       var content = jsonData.Response.Content;
       if (content)
       {
            document.getElementById(loginstatus_etLoginStatus).innerHTML = RenderLoggedInUserStatus(GetNicknameFromCookie(), content.MessageCount.NewMessageCount);
            SetCookie(loginstatus_ckNewMessageCount, content.MessageCount.NewMessageCount, SecondsFromNow(loginstatus_cookieSecExpire));
       }         
	}
}

function SecondsFromNow(sec)
{
   var dt1 = new Date();
   var dt2 = new Date(dt1.valueOf() + (sec * 1000));
   return dt2.toUTCString();
}

function RenderGuestLoginStatus()
{
    var content = new Array();
	content[content.length] = "<a href=\"";
	content[content.length] =  loginstatus_registerUrl;
	content[content.length] =  "\">Register now</a> | <a href=\"";
	content[content.length] =  loginstatus_loginUrl;
	content[content.length] =  "\">Login";
	return content.join('');
}

function RenderLoggedInUserStatus(pNickname, pNewMessageCount)
{	
	//trim nickname if >= 16 characters
	var shortNickname = pNickname;
	if(shortNickname.length >= 16){
		shortNickname = shortNickname.substring(0, 10) + "...";
	}
	
	//Hi<a href="#">teacobob27</a>|<a href="#">My Break</a>|<a href="#"><img src="images/new_messages.gif" border="0" /></a><a href="#">(3)</a>|<a href="#">Logout</a>
    var content = new Array();
	content[content.length] =  "Hi <a href=\"";
	content[content.length] =  loginstatus_personalUrl;
	content[content.length] =  pNickname;
	content[content.length] =  " \">";
	content[content.length] =  shortNickname;
	content[content.length] =  "</a>";
	content[content.length] =  " | <a href=\"";
	content[content.length] =  loginstatus_myMessageUrl;
	content[content.length] =  "\">";
	content[content.length] =  "<img src=\"http://media1.break.com/static/live/v1/img/header/new_messages.gif\" border=\"0\" /></a> ";
	content[content.length] =  "<a href=\"";
	content[content.length] =  loginstatus_myMessageUrl;
	content[content.length] =  "\">";
	content[content.length] = "(" + parseInt(pNewMessageCount) + ")";
	content[content.length] = "</a> | <a href=\"";
	content[content.length] = loginstatus_logoutUrl;
	content[content.length] = "\">Logout</a>";
	return content.join('');
}

function SetCookie(pCookieName, pCookieValue, pCookieDate)
{
	var theCookie = escape(pCookieName) + "=" + escape(pCookieValue);
	
	if(pCookieDate != null && pCookieDate != "")
	{
		theCookie += ";expires=" + pCookieDate;
	}
	
	// add domain information
	theCookie += ";path=/;domain=" + ".break.com"; 
	
	document.cookie = theCookie; 
}

function GetCookie(pCookieName)
{
	var oCookies = document.cookie.split(";");
	
	for(var i = 0; i < oCookies.length; i++)
	{
		var oCookiePair = oCookies[i].split("=");
		var sCookieName = unescape(oCookiePair[0]).replace(" ","");
		var sCookieValue = unescape(oCookiePair[1]);

		if(sCookieName == pCookieName)
		{
			return sCookieValue;
		}
	}
	return "";
}

function GetNicknameFromCookie()
{
    var oCookies = document.cookie.split(";");
	
	for(var i = 0; i < oCookies.length; i++)
	{
		var oCookiePair = oCookies[i].split("=");
		var sCookieName = unescape(oCookiePair[0]).replace(" ","");
		var sCookieValue = oCookiePair[1];

		if(sCookieName == "MemberData")
		{
		    var d2 = unescape(sCookieValue);
		
			var data = eval('('+d2+')'); 
			return data.Nickname;
		}
	}
	return "";
}

function DeleteCookie(pCookieName)
{
	SetCookie(pCookieName, "", new Date("January 1, 2000"));
}

function AuthRedirect()
{
    window.location = "http://my.break.com/auth.aspx?AppRedirect="+escape(document.location);
}
	