﻿
/* Master */

function ApplicationLoadHandler(sender, args)
{
    var form = Sys.WebForms.PageRequestManager.getInstance()._form;
    form._initialAction = GetAction();
    form.action = GetAction();
}

function GetAction()
{
    var url = window.location.href;
    return url.replace(window.location.hash , "");
}

function BeginRequestHandler(sender, args)
{
    $find("ProgressPopup").show();
}

function EndRequestHandler(sender, args)
{
    $find("ProgressPopup").hide();
    
    if (args.get_error() != undefined)
    {
        var parts = args.get_error().message.split(":");
        var message = "";
        for (var i = 1; i < parts.length - 1; i++)
        {
            message += parts[i];
            message += ":";
        }
        message += parts[parts.length - 1];
        
        MessageBox("发生错误", message);
        args.set_errorHandled(true);
        return;
    }
    
    window.scrollTo(0, 0);
}

function LayoutSidebars()
{
    var elements = document.getElementsByTagName("*");
    
    var sidebarExp = new RegExp("\\bsidebar\\b");
    var rightbarExp = new RegExp("\\brightbar\\b");
    
    for (i = 0; i < elements.length; i++)
    {
        var element = elements[i];
        if (sidebarExp.test(element.className)
            || rightbarExp.test(element.className))
        {
            element.style.height = element.parentNode.offsetHeight + 'px';
        }
    }
}

/* Selection */       

function _SelectAll(prefix, postfix)
{
     var oArr = _GetColl(prefix, postfix);
     for( var o in oArr )
     {
      oArr[o].checked = true;
     }
}

function _SelectNone(prefix, postfix)
{
     var oArr = _GetColl(prefix, postfix);
     for( var o in oArr )
     {
      oArr[o].checked = false;
     }
}

function _RevSelect(prefix, postfix)
{
     var oArr = _GetColl(prefix, postfix);
     for( var o in oArr )
     {
      oArr[o].checked = !oArr[o].checked;
     }
}

function _GetColl(prefix, postfix)
{
     var i = 0;
     var oArr = new Array();
     while( true)
     {
      var o = getObj(prefix + '_ctrl' + i + '_' + postfix);
      if( o != null )
      {
       oArr.push( o );
      }
      else
      {
       break;
      }
      i++;
     }
     
     return oArr;
}

function getObj( objID )
{
     return document.getElementById( objID );
}

/* VoteBar */

function IncreaseCommentOpposed(commentID, voteBarID)
{
    DynamicPopulate.IncreaseCommentOpposed(commentID, IncreaseCommentVoteCallback, null, voteBarID);
}

function IncreaseCommentAgreed(commentID, voteBarID)
{
    DynamicPopulate.IncreaseCommentAgreed(commentID, IncreaseCommentVoteCallback, null, voteBarID);
}

function IncreaseCommentVoteCallback(result, userContext)
{
    if (result == null)
    {
        return;
    }
    
    var agreedNumLabel = document.getElementById(userContext + '_agreedNum');
    agreedNumLabel.innerHTML = result[0];
            
    var opposedNumLabel = document.getElementById(userContext + '_opposedNum');
    opposedNumLabel.innerHTML = result[1];
    
    var agreedCell = document.getElementById(userContext + '_agreed');
    agreedCell.style.width = (100 - GetOpposedPercent(result[1], result[0])) + "%";
    
    var opposedCell = document.getElementById(userContext + '_opposed');
    opposedCell.style.width = GetOpposedPercent(result[1], result[0]) + "%";
    
    agreedCell.style.backgroundColor = result[2];
}

function GetOpposedPercent(opposed, agreed)
{
    if (opposed + agreed == 0)
    {
        return 50;
    }

    return opposed * 100 / (opposed + agreed);
}

/* DiggBar */

function IncreaseEntryScore(entryID, diggBarID)
{
    var isLoggedIn = Sys.Services.AuthenticationService.get_isLoggedIn();
    
    if(!isLoggedIn)
    {
        MessageBox("顶失败", "请登录后顶。");
        return;
    }

    DynamicPopulate.IncreaseEntryScore(entryID, IncreaseEntryScoreCallback, IncreaseEntryScoreFailedCallback, diggBarID);
}

function IncreaseEntryScoreCallback(result, userContext)
{
    if (result == null)
    {
        return;
    }
    
    var scoreLabel = document.getElementById(userContext + '_ScoreLink');
    scoreLabel.innerHTML = result[0];
    scoreLabel.style.color = result[1];
}

function IncreaseEntryScoreFailedCallback(error)
{
    MessageBox("顶失败", error.get_message());
}

/* Home Page */

function SetBrowserHomePage(sender, url)
{
    if (sender.style.behavior != "url(#default#homepage)")
    {
        MessageBox("设置失败", "您的浏览器不支持从这里将站点设为首页。请从浏览器菜单完成设置。");
        return;
    }
    sender.setHomePage(url);
}
