﻿// JScript File
function ChangePanelStatus(panelid, on)
{
     MyoatsWebService.AjaxWebService.ChangePanelStatus(panelid, on);
}

function AddILike(LikeNode, DrawingId, Url)
{
    if(LikeNode.className.indexOf("Dis")<0)
    {
        var LikeObj={_node:LikeNode, _url:Url};
        MyoatsWebService.AjaxWebService.AddILike(DrawingId,onAddILikeSuccess,onFailure,LikeObj);
        var ProgressDiv=next(myparent(LikeNode));
        ProgressDiv.style.display="block";
    }
}

function onAddILikeSuccess(result, context, methodName){
    var ProgressDiv=next(myparent(context._node));
    ProgressDiv.style.display="none";
        
    if(result==1)
    {
        var LinkNumber=first(prev(myparent(context._node)));
        var num=LinkNumber.innerHTML;
        LinkNumber.innerHTML=parseInt(num)+1+"";
        context._node.disabled="disabled";
        context._node.className= context._node.className+ "Dis";
    }
    else if(result==-1)
    {
        window.location.href = context._url;
    }
    else if(result==-2)
    {
        alert("you must confirm your user registration first before add likes!");
        window.location.href = "http://www.myoats.com/verification.aspx";
    }
}
function AddFavorite(FavoriteNode, DrawingId, Url, ShowUnFav)
{
    ShowUnFav = typeof(ShowUnFav) != 'undefined' ? ShowUnFav : false;
    var FavObj={_node:FavoriteNode, _url:Url, _showUnFav:ShowUnFav};

    if(first(FavoriteNode).innerHTML=='Favorite?')
    {
        MyoatsWebService.AjaxWebService.AddFavorite(DrawingId,onAddFavoriteSuccess,onFailure,FavObj);
    }
    else
    {
        MyoatsWebService.AjaxWebService.DeleteFavorite(DrawingId,onDeleteFavoriteSuccess,onFailure,FavObj);
    }
    var ProgressDiv=next(FavoriteNode);
    ProgressDiv.style.display="inline";
}

function onAddFavoriteSuccess(result, context, methodName){
    var ProgressDiv=next(context._node);
    ProgressDiv.style.display="none";
    
    if(result==1)
    {
        if(context._showUnFav)
            first(context._node).innerHTML="Not a Favorite?";
        else
        {
            myparent(context._node).removeChild(next(next(context._node)));
            myparent(context._node).removeChild(context._node);
        }
    }
    else if(result==-1)
    {
        window.location.href = context._url;
    }
    else if(result==-2)
    {
        alert("you must confirm your user registration first before add favorites!");
        window.location.href = "http://www.myoats.com/verification.aspx";
    }
}
function onDeleteFavoriteSuccess(result, context, methodName){
    if(result==1)
    {
        first(context._node).innerHTML="Favorite?";
            
        var ProgressDiv=next(context._node);
        ProgressDiv.style.display="none";
    }
    else if(result==-1)
    {
        window.location.href = context._url;
    }
}

function AskFriend(AskFriendNode, FriendId, Url)
{
    if(first(AskFriendNode).innerHTML=="Add to friends")
    {
        var AskFriendObj={_node:AskFriendNode, _url:Url};
        MyoatsWebService.AjaxWebService.AskFriend(FriendId,onAskFriendSuccess,onFailure,AskFriendObj);
        var ProgressDiv=next(AskFriendNode);
        ProgressDiv.style.display="block";
    }
}

function onAskFriendSuccess(result, context, methodName){
    if(result==1)
    {
        var ProgressDiv=next(context._node);
        ProgressDiv.style.display="none";
        var parentNode=myparent(context._node);
        parentNode.removeChild(context._node);
        var theNew = document.createElement('span');
        theNew.innerHTML='Friend Request Pending';
        theNew.className='infoIconTxt';
        parentNode.insertBefore(theNew, first(parentNode));
    }
    else if(result==-1)
    {
        window.location.href = context._url;
    }
}

function AddUserComment(AddButton, BuddyId, Url)
{
    var ValidationErrorMessage=$get("ValidationErrorMessage");
    ValidationErrorMessage.style.display="none";
    var CommentText=next(next(first($get('CollapsableCommentPanel')))).value;
    if(CommentText=="")
    {
        ValidationErrorMessage.style.display="block";
        first(ValidationErrorMessage).innerHTML="*";
        return;
    }
    if(CommentText.indexOf("<")>=0 || CommentText.indexOf(">")>=0)
    {
        ValidationErrorMessage.style.display="block";
        first(ValidationErrorMessage).innerHTML="Cannot contain '<' or '>'.";
        return;
    }
    var CommentObj={_node:AddButton,_text:CommentText, _url:Url};
    MyoatsWebService.AjaxWebService.AddUserComment(BuddyId,CommentText,onAddUserCommentSuccess,onFailure,CommentObj);
    var ProgressDiv=next(AddButton);
    ProgressDiv.style.display="block";
}

function onAddUserCommentSuccess(result, context, methodName){
    if(result!=null)
    {
        var ProgressDiv=next(context._node);
        ProgressDiv.style.display="none";
        if(result.CommentId<0)
            alert("you must confirm your user registration first before add comments!");
        else
        {
            var Panel=document.createElement( "div" );
            Panel.className="commentContainer";
            Panel.innerHTML="<span class='avitarThumb'><a href='../account/myaccount.aspx'>"+
            "<img src='"+result.ProfileImage+"' style='border-width:0px;' /></a></span>"+
            "<span class='fractalAuthor'><a href='../account/myaccount.aspx'>"+result.UserName+"</a>"+
            "</span><span class='commentDate'>"+(result.AddTime.getMonth()+1)+"."+result.AddTime.getDate()+"."+
            result.AddTime.getFullYear()+"</span><div class='userComments'>"+
            ProcessLinkTag(context._text.replace(/\n/g,"<br/>"))+"</div>"
            var CommentsHolder=first($get('CollapsableCommentPanel'));
            if(first(CommentsHolder)==null)
                CommentsHolder.appendChild(Panel);
            else
                CommentsHolder.insertBefore(Panel,first(CommentsHolder));
                
            next(next(first($get('CollapsableCommentPanel')))).value="";
        }
    }
    else
    {
        window.location.href = context._url;
    }
}

function ProcessLinkTag(text)
{
    return SplitBySymbol(text, "<br/>");
}

function SplitBySymbol(text, Symbol)
{
    var ret = "";
    var FirstTime = true;
    var textlist = text.split(Symbol);
    switch (Symbol)
    {
        case "<br/>":
            for (var i=0;i<textlist.length;i++)
            {
                var AfterProcess = SplitBySymbol(textlist[i], ", ");
                ret = JoinString(ret, AfterProcess, Symbol, i);
            }
            break;
        case ", ":
            for (var i=0;i<textlist.length;i++)
            {
                var AfterProcess = SplitBySymbol(textlist[i], ". ");
                ret = JoinString(ret, AfterProcess, Symbol, i);
            }
            break;
        case ". ":
            for (var i=0;i<textlist.length;i++)
            {
                var AfterProcess = SplitBySymbol(textlist[i], " ");
                ret = JoinString(ret, AfterProcess, Symbol, i);
            }
            break;
        case " ":
            for (var i=0;i<textlist.length;i++)
            {
                var AfterProcess = SplitBySymbol(textlist[i], ",");
                ret = JoinString(ret, AfterProcess, Symbol, i);
            }
            break;
        case ",":
            for (var i=0;i<textlist.length;i++)
            {
                var AfterProcess = AddLinkTagToWord(textlist[i]);
                ret = JoinString(ret, AfterProcess, Symbol, i);
            }
            break;
    }
    return ret;
}
function JoinString(Target, ToJoin, JoinSymbol, LoopTimes)
{
    if (LoopTimes==0)
    {
        Target += ToJoin;
    }
    else
        Target += JoinSymbol + ToJoin;
    return Target;
}
function AddLinkTagToWord(comment)
{
    var ret = "";

    if (comment.toLowerCase().indexOf("http")>=0)
    {
        var w = CheckLinkEndSymbol(comment);
        ret = "<a href=\"" + w[0] + "\" target=\"_blank\">" + w[0] + "</a>" + w[1];
    }
    else if (comment.toLowerCase().indexOf("www.")>=0)
    {
        var w = CheckLinkEndSymbol(comment);
        ret = "<a href=\"http://" + w[0] + "\" target=\"_blank\">" + w[0] + "</a>" + w[1];
    }
    else
        ret = comment;
    return ret;
}
function CheckLinkEndSymbol(LinkText)
{
    var RetArry=new Array(2);
    var end = LinkText.toLowerCase().substring(LinkText.length - 1, LinkText.length);
    if (end[0] == "," || end[0] == "." || end[0] == ";" || end[0] == "!" || end[0] == ")" || end[0] == "\"" || end[0] == "\'")
    {
        RetArry[0] = LinkText.substring(0, LinkText.length - 1);
        RetArry[1] = LinkText.substring(LinkText.length - 1, LinkText.length);
    }
    else
    {
        RetArry[0] = LinkText;
        RetArry[1] = "";
    }
    return RetArry;
}
function onFailure(error, context, methodName){
    alert(error.get_message());
}

function prev( elem ) {
    do {
        elem = elem.previousSibling;
    } while ( elem && elem.nodeType != 1 );
    return elem;
}

function next( elem ) {
    do {
        elem = elem.nextSibling;
    } while ( elem && elem.nodeType != 1 );
    return elem;
}

function myparent(elem)
{
    return elem.parentNode;
}

function first(elem){
    elem=elem.firstChild;
    return elem && elem.nodeType != 1 ? next(elem):elem;
}

