﻿// Default.js

var m_CurrentPage = 1;
var m_ShowPostsCount = 350;
var m_ShowUsersCount = 400;
var SUCCESS = "success";

// Show Posts
function ShowPosts(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.ShowPosts(att[0], m_ShowPostsCount,SucceededCallback, FailedCallback);
}

// Show Posts By Pos
function ShowPostsByPos(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.ShowPostsByPos(att[0], att[1], att[2],
        SucceededCallback, FailedCallback);
}

// Login
function Login(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.Login(att[0], att[1], 
        SucceededCallback, FailedCallback);
}

// Login Vote
function LoginVote(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.Login_Vote(att[0], att[1], att[2], 
        SucceededCallback, FailedCallback);
}

// Auto Login
function AutoLogin() {
    PeacockNine.Buzzsponge2.Web.WebService.AutoLogin(SucceededCallback, FailedCallback);
}

// Crop Tmp Image
function CropTmpImage(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.CropTmpImage(att[0], att[1], att[2], att[3], att[4], att[5],
        SucceededCallback, FailedCallback);    
}

// Clear Tmp
function ClearTmp(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.ClearTmp(att[0], 
        SucceededCallback, FailedCallback);      
}

// Add Post
function AddPost(att)
{ 
    if(att[3]==null)    {//response title is null
        att[3] = "";
    }
    PeacockNine.Buzzsponge2.Web.WebService.AddPost(att[0], att[1], att[2], att[3], att[4], att[5], att[6],
        SucceededCallback, FailedCallback);
}

// Add Post2
function AddPost2(att) {
    if (att[3] == null) {//response title is null
        att[3] = "";
    }
    PeacockNine.Buzzsponge2.Web.WebService.AddPost2(att[0], att[1], att[2], att[3], att[4], att[5], att[6], att[7],
        SucceededCallback, FailedCallback);
}

// Get Post
function GetPost(att)
{   
     PeacockNine.Buzzsponge2.Web.WebService.GetPost(att[0], att[1],  
        SucceededCallback, FailedCallback);
}

// Bookmark
function Bookmark(att)
{
       PeacockNine.Buzzsponge2.Web.WebService.Bookmark(att[0],  
        SucceededCallback, FailedCallback); 
}

// Get Posts
function GetPosts(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.GetPosts(att[0], 
        SucceededCallback, FailedCallback);
}

// Vote Post
function VotePost(att)
{ 
    PeacockNine.Buzzsponge2.Web.WebService.VotePost(att[0], att[1], att[2], att[3],
        SucceededCallback, FailedCallback);      
}

// Abuse Post
function AbusePost(att)
{
    if(att[3]==null)    {
        att[3] = "";
    }
    PeacockNine.Buzzsponge2.Web.WebService.AbusePost(att[0], att[1], att[2], att[3],
        SucceededCallback, FailedCallback);      
}

// Get Post Tags
function GetPostTags(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.GetPostTags(att[0], 
        SucceededCallback, FailedCallback);
}

// Tag Post
function TagPost(att)
{   
    if(att[3]==null)    {//tags
        att[3] = "";
    }
    if(att[4]==null)    {//deltags
        att[4] = "";
    }
    PeacockNine.Buzzsponge2.Web.WebService.TagPost(att[0], att[1], att[2], att[3], att[4],
        SucceededCallback, FailedCallback);      
}

// Search Posts
function SearchPosts(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.SearchPosts(att[0], 
        SucceededCallback, FailedCallback);
}

// Search Posts By User
function SearchPostsByUser(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.SearchPostsByUser(att[0], 
        SucceededCallback, FailedCallback);
}

// Get Hot Posts
function GetHotPosts()
{
    PeacockNine.Buzzsponge2.Web.WebService.GetHotPosts( 
        SucceededCallback, FailedCallback);
}

// View User Profile
function ViewUserProfile(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.ViewUserProfile(att[0], att[1], att[2], 
        SucceededCallback_Profile, FailedCallback_Profile);
    return true;
}

//ViewUserProfileMemo
function ViewUserProfileMemo(att)
{
     PeacockNine.Buzzsponge2.Web.WebService.ViewUserProfileMemo(att[0], att[1], att[2], 
        SucceededCallback_Profile, FailedCallback_Profile);
    return true;
}

// Look For Pwd
function LookForPwd(att)
{
    var RegExpEmail = "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$";
    var reg = new RegExp(RegExpEmail);
    
    if(!reg.test(att[0]))
    {
        return false;
    }
    
    PeacockNine.Buzzsponge2.Web.WebService.LookForPwd(att[0],
        SucceededCallback, FailedCallback);
    return true;
}

// Edit User Profile Memo
function EditUserProfileMemo(att)
{
    lastMemoInfo = null;
    /*if(att[3]==null)    {
        att[3] = "";
    }*/
    PeacockNine.Buzzsponge2.Web.WebService.EditUserProfileMemo(att[0], att[1], att[2], att[3],
        SucceededCallback, FailedCallback);
}

// Show Users
function ShowUsers(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.ShowUsers(att[0], att[1], 
        SucceededCallback, FailedCallback);
}

// Show Users By Pos
function ShowUsersByPos(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.ShowUsersByPos(att[0],att[1],att[2],
        SucceededCallback, FailedCallback);
}

// Get BzzID
function GetBzzID(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.GetBzzID(att[0], att[1], 
        SucceededCallback_Profile, FailedCallback_Profile);
}

// Get Points
function GetPoints(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.GetPoints(att[0], att[1], att[2], 
        SucceededCallback_Profile, FailedCallback_Profile);
}

// Get Grant Points
function GetGrantPoints(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.GetGrantPoints(att[0], att[1], att[2],
        SucceededCallback_Profile, FailedCallback_Profile);
}

// Get Cur Points
function GetCurPoints(att)
{   
    PeacockNine.Buzzsponge2.Web.WebService.GetCurPoints(att[0], att[1], 
        SucceededCallback_Profile, FailedCallback_Profile);
}

// Get Panel Url
function GetPanelUrl(att)
{ 
    PeacockNine.Buzzsponge2.Web.WebService.GetPanelUrl(att[0], att[1], 
        SucceededCallback_Profile, FailedCallback_Profile);
}

// Redeem
function RedeemPoints(att)
{ 
    if(checkEmail(att[5])==false)  {
        return false;
    }
    PeacockNine.Buzzsponge2.Web.WebService.RedeemPoints(att[0], att[1], att[2], att[3], att[4], att[5],
        SucceededCallback_Profile, FailedCallback_Profile);
    return true;
}

// Change Pwd
function ChangePwd(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.ChangePwd(att[0], att[1], att[2], att[3],
        SucceededCallback_Profile, FailedCallback_Profile);
}

// Change Unsubscribe
function Unsubscribe(att)
{
    PeacockNine.Buzzsponge2.Web.WebService.Unsubscribe(att[0], att[1], 
        SucceededCallback_Profile, FailedCallback_Profile);
}

// EditUserProfileAllMemo
function EditUserProfileAllMemo(att)
{
     PeacockNine.Buzzsponge2.Web.WebService.EditUserProfileAllMemo(att[0], att[1], att[2],
        SucceededCallback_Profile, FailedCallback_Profile);
}

// UpdateScreenName
function UpdateScreenName(att)
{
     PeacockNine.Buzzsponge2.Web.WebService.UpdateScreenName(att[0], att[1], att[2],
        SucceededCallback_Profile, FailedCallback_Profile);
}

// AbuseProfile
function AbuseProfile(att)
{
     PeacockNine.Buzzsponge2.Web.WebService.AbuseProfile(att[0], att[1], att[2],
        SucceededCallback_Profile, FailedCallback_Profile);
 }

 // GetQuestions
 function GetQuestions() {
     PeacockNine.Buzzsponge2.Web.WebService.GetQuestions(SucceededCallback, FailedCallback);
 }
 
 //GetAnsweredQuestions
 function GetAnsweredQuestions(att)
 {
    PeacockNine.Buzzsponge2.Web.WebService.GetAnsweredQuestions(att[0],
        SucceededCallback,FailedCallback);
 }

// focue
function SetFocus()
{
    this.focus();
}

////////// Callback function //////////

// Callback function invoked on success of the Web service methods.
function SucceededCallback(result, userContext, methodName)
{
    switch(methodName)
    {
        case ("ShowPosts"):
        {
            eval("data=" + result);
            thisMovie("main").viewPost(data);
            break;
        }
        case ("Login"):
        {
            eval("data=" + result);
            thisMovie("main").loginCallback(data);
            break;
        }
        case ("Login_Vote"):
        {
            eval("data=" + result);
            thisMovie("main").loginCallback(data);
            break;
        }
        case ("AddPost"):
        {
            eval("data=" + result);
            thisMovie("main").addPostCallback(data.ID);
            break;
        }
        case ("AddPost2"):
        {
            eval("data=" + result);
            thisMovie("main").addPostCallback(data.ID);
            break;
        }
        case ("GetPosts"):
        {
             // result is a JSON string [{ID,UserID,Title,Message,Time}...]
            eval("data=" + result);
            thisMovie("main").showResponse(data);
            break;
        }
        case ("EditUserProfileMemo"):
        {
            break;
        }
        case ("LookForPwd"):
        {
            var res = new Object();
            res.method = methodName;
            res.type = SUCCESS;
            res.value = result;
            thisMovie("main").callback(res);
            break;
        }
        case ("ShowUsers"):
        {
            eval("data=" + result);
            var res = new Object();
            res.method = methodName;
            res.type = SUCCESS;
            res.value = data;
            thisMovie("main").viewUsers(res);
            break;
        }
        case ("ShowPostsByPos"):
        {
            if(result=="")  {
                data = null;
            }else   {
                var index =result.indexOf("-");
                var num = result.substr(0,index);
                var tmp = result.substr(index+1);
                eval("data="+tmp);
            }
            var res = new Object();
            res.method = methodName;
            res.type = SUCCESS;
            res.value = data;
            res.value2 = num;
            thisMovie("main").callback(res);
            break;
        }
        case ("ShowUsersByPos"):
        {
            if(result=="")  {
                data = null;
            }else   {
                var index =result.indexOf("-");
                var num = result.substr(0,index);
                var tmp = result.substr(index+1);
                eval("data="+tmp);
            }
            var res = new Object();
            res.method = methodName;
            res.type = SUCCESS;
            res.value = data;
            res.value2 = num;
            thisMovie("main").callback(res);
            break;
        }                        
        default:
        {
            eval("data=" + result);
            var res = new Object();
            res.method = methodName;
            res.type = SUCCESS;
            res.value = data;
            thisMovie("main").callback(res);
            break;
        }
    }
}

// Callback function invoked on failure of the Web service methods.
function FailedCallback(error, userContext, methodName)
{
    if(error !== null)
    {
        switch(methodName)
        {
            case ("Login"):
            {
                thisMovie("main").loginCallback("error");
                break;
            }
            case ("Login_Vote"):
            {
                thisMovie("main").loginCallback("error");
                break;
            }
            case ("ShowPosts"):
            {
                thisMovie("main").viewPost("error");
                break;
            }
            case ("AddPost"):
            {
                if(error.get_message()=="Check User Failed!")
                {
                    thisMovie("main").addPostCallback("login");
                }else   {
                    thisMovie("main").addPostCallback("error");
                }
                break;
            }
            case ("AddPost2"):
            {
                if (error.get_message() == "Check User Failed!") {
                    thisMovie("main").addPostCallback("login");
                } else {
                    thisMovie("main").addPostCallback("error");
                }
                break;
            }
            case ("GetPosts"):
            {
                thisMovie("main").showResponse("error");
                break;
            }
            default:
            {
                var res = new Object();
                res.method = methodName;
                res.type = "error";
                res.value = error.get_message();
                thisMovie("main").callback(res);
                break;
            }
        }    
    }
}

//--------
function SucceededCallback_Profile(result, userContext, methodName)
{
    switch(methodName)
    {
        case ("ViewUserProfile"):
        {
            eval("data=" + result);
            var res = new Object();
            res.method = methodName;
            res.type = SUCCESS;
            res.value = data;
            thisMovie("profile").showUserProfile(res);
            break;
        }
        case ("ViewUserProfileMemo"):
        {
            eval("data=" + result);
            var res = new Object();
            res.method = methodName;
            res.type = SUCCESS;
            for(var i in data)  {
                if(data[i]=="") {
                    data[i] = null;
                }
            }
            res.value = data;
            thisMovie("profile").showUserProfileMemo(res);
            break;
        }
        case ("GetPoints"):
        {
            var res = new Object();
            res.method = methodName;
            res.type = SUCCESS;
            res.value = result;
            thisMovie("profile").callback(res);
            break;
        }
        case ("GetPanelUrl"):
        {
            var res = new Object();
            res.method = methodName;
            res.type = SUCCESS;
            res.value = result;
            thisMovie("profile").callback(res);
            break;
        }
        case ("RedeemPoints"):
        {
            var res = new Object();
            res.method = methodName;
            res.type = SUCCESS;
            res.value = result;
            thisMovie("profile").callback(res);
            break;
        }
        case ("ChangePwd"):
        {
            var res = new Object();
            res.method = methodName;
            res.type = SUCCESS;
            res.value = result;
            thisMovie("profile").callback(res);
            break;
        }
        case ("EditUserProfileAllMemo"):
        {
            Close();
            break;
        }
        case ("AbuseProfile"):
        {
            alert("Thanks, we will look into this.");
            break;
        }
        default:
        {
            eval("data=" + result);
            var res = new Object();
            res.method = methodName;
            res.type = SUCCESS;
            res.value = data;
            thisMovie("profile").callback(res);
            break;
        }
    }
}

//------------
function FailedCallback_Profile(error, userContext, methodName)
{
    if(error !== null)
    {
        switch(methodName)
        {
            case ("ViewUserProfile"):
            {
                var res = new Object();
                res.method = methodName;
                res.type = "error";
                res.value = error.get_message();
                thisMovie("profile").showUserProfile(res);
                break;
            }
            case ("EditUserProfileAllMemo"):
            {
                alert("Please login again.");
                Close();
                break;
            }    
            default:
            {
                var res = new Object();
                res.method = methodName;
                res.type = "error";
                res.value = error.get_message();
                thisMovie("profile").callback(res);
                break;
            }
        }
    }
}

function thisMovie(movieName) {
	if (navigator.appName.indexOf("Microsoft") != -1) {
		return window.document[movieName];
	}
	else {
		return document[movieName];
	}
}

function checkEmail(email)	{
	var re = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/i;
	if(!re.test(email.replace(/(^\s*)|(\s*$)/g, "")))
		return false;
	else
		return true;
}

var lastMemoInfo = null;
function onProfileClose()   {
    if(lastMemoInfo!=null)  {
        var tmp = lastMemoInfo.concat();
        EditUserProfileMemo(tmp);
    }
}

function bufferLastMemoInfo(info)   {
    lastMemoInfo = info;
}

function Close() {
    var div = document.getElementById("flashcontent");
    div.style.display = "none";
    window.open('','_parent','');
    window.close(); 
}

// Page Load
function pageLoad() 
{
    this.focus();
   // ShowPosts(m_CurrentPage, m_ShowPostsCount, m_ShowPostsTopLevel);
}

if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
