//2009-4-29 by peanut.li

var commentWebService = "/MSMSBlogService/MSArticleService.asmx";
var quoteservice = "SecuritiesProcy.ashx";
var remoteSourceBridge = "RemoteSourceBridge.ashx";
var stockAnalystReport = "http://quicktake.morningstar.com/stocknet/MorningstarAnalysis.aspx?Country=USA&Symbol=";
var fundAnalystReport = "http://quicktake.morningstar.com/fundnet/MorningstarAnalysis.aspx?Country=USA&Symbol=";
var fundETFAnalystReport = "http://quicktake.morningstar.com/ETFnet/MorningstarAnalysis.aspx?Country=USA&Symbol=";
var quotePage = "http://quote.morningstar.com/Quote/Quote.aspx?ticker=";
var homepageWebservice = "http://www.morningstar.com/homepagewebservice/homepagecontent.asmx/GetActiveGainersLosers";

var getUserIdMethod = commentWebService + "/GetUserID";
var getCommentsMethod = commentWebService + "/GetArticleSummary";
var addCommentMethod = commentWebService + "/CommentArticle";
var addFlagPostMethod = commentWebService + "/FlagPost";
var userHasReportedMethod = commentWebService + "/UserHasReported";
var removeByFlagMethod = commentWebService + "/RemoveByFlag";
var retrievePostMethod = commentWebService + "/RetrievePost";
var getSinglePostMethod = commentWebService + "/GetSingleArticleComment";
var recommendArticle = commentWebService + "/RecommendArticle";
var RegisterUserMethod = commentWebService + "/RegisterUser";

var commentContainer = 
   "<div class='arow_b3'><div class='acolx_a1'><div class='arow_a1 atitle_b1'>{0}</div>" + 
   "<div class='arow_a1 atext_b1'>{1}</div><div class='acolm_e1'>" + 
   "<li id='menu1' class='adrop1 atext_a4' onclick='comment.getPostUI({2},{3},{4},{5});showDropdown(event,this);'>" + 
   "<a class='adrop1h'>Flag</a><ul id='ul{2}' style='display: none;'></ul></li></div></div>" + 
   "<div id='content{2}' class='acolx_a2 atext_a2'>{6}</div></div>";

var flagPostUI = "<li><a href='javascript:comment.flagPost({0},{1},1)'>Report as off topic</a></li>" + 
   "<li><a href='javascript:comment.flagPost({0},{1},2)'>Report as inflammatory</a></li>" +
   "<li><a href='javascript:comment.flagPost({0},{1},3)'>Report as advertising</a></li>" +
   "<li><a href='javascript:comment.flagPost({0},{1},4)'>Report as copyright content</a></li>";

var flagPostedUI = "<li>This post has been reported.</li>";

var adminFlagPostUI = "<li>---</li><li><a href='javascript:comment.removePost({0},{1},1)'>Remove off topic</a></li>" + 
   "<li><a href='javascript:comment.removePost({0},{1},2)'>Remove inflammatory</a></li>" +
   "<li><a href='javascript:comment.removePost({0},{1},3)'>Remove advertising</a></li>" +
   "<li><a href='javascript:comment.removePost({0},{1},4)'>Remove copyright content</a></li>";
   
var adminFlagPostedUI = "<li><a href='javascript:comment.retrievePost({0},{1})'>Un-moderate post</a></li>";

function Comment(articleID, CustID, aType)
{
    this.pageCount = 10;
    this.articleId = articleID;
    this.CustId = CustID;
    this.admin = false;    
    this.userId = 0;
    this.articleType = aType;

    this.getUserId = function(guid)
    {
        if (guid == "")
            return 0;
        var paraStr = "guid={guid}";
        var para = escape(paraStr.replace("{guid}", guid));
        var url = "url=" + escape(getUserIdMethod + "?")+ para;
        var reStr = $.ajax({url: remoteSourceBridge,data: url,async: false}).responseText;
        if (reStr == null || (/>\d+</).exec(reStr) == null)
            return 0;
        var userId = parseInt(/>\d+</.exec(reStr).toString().replace(">",""));
	    return userId;
    }
    
    this.initUserId = function()
    {
        this.userId = this.getUserId(this.CustId);
    }

    this.asyncRequest = function (url, data, callback){
        $.ajax({
	        url: url,
	        data: data + "&r=" + Math.round(Math.random()*100000),
	        dataType:"xml",
		    timeout: 20000,
		    error: function(request,error) {  
		        //alert(error); 
		     },
	        success: function(xml, status) {
		        if (status != "success") return;
			    callback(xml);}
	        });
    }

    this.getComments = function(pageIndex){
        var paraStr = "articleID={0}&pageIndex={1}&pageSize={2}&currentUserID={3}&onlyComments=false&type=" + this.articleType;
        //type:ArticleType.StockAnalystNote = 1,CMSArticle = 2,Video = 3,FundAnalystPicks = 4,ThirdPartyContent = 5,News = 6
        var remoteUrl = escape(getCommentsMethod + "?" + paraStr.format(this.articleId, pageIndex, this.pageCount, this.userId));
                
        var callback = function(xml)
        {
            var totalComments = $(xml).find("TotalComments").text();	
	        var totalRecommendation = $(xml).find("TotalRecommendation").text();
	        var pagingInfo;	
	        if(totalComments == "0" && pageIndex == 0)
	        {
	            pagingInfo = "";
	            $("#commentContent").hide();
	        }
	        else
	        {
	            pagingInfo = comment.pageCount * pageIndex + 1 + "-" + (comment.pageCount * pageIndex + $(xml).find("Comment").length) + " of ";
	            $("#commentContent").show();	            
	        }
	        pagingInfo += totalComments + " Comments";
	            
	        var flagger = $(xml).find("IsSupperFlagger").text();				
	        comment.admin = ($(xml).find("IsAdministrator").text() == "true");
            $(".tools_icon5").html("Recommend (" + totalRecommendation + ")");
            $("#commentPaging").html(pagingInfo);
            
            $("#commentContent .arow_b3").remove();
	        $(xml).find("Comment").each(function(){
	            var author = $(this).find("AuthorName").text();
	            var time = $(this).find("FormattedPostDate").text();
	            var postId = $(this).find("PostID").text();	
	            var authorId = $(this).find("AuthorID").text();
	            var flag = parseInt($(this).find("Flag").text());
	            var content = $(this).find("Content").text();
	            if (flag>0)
	                content = getContent(flag, postId);
       
	            $(commentContainer.format(author, time, postId, authorId, flagger, (flag>0), content)).appendTo("#commentContent");
            	    
	            if (flag>0 && comment.admin == "false")//hide the left column(author,time and flag)
	                $("#commentContent .arow_b3:last div:first-child()").html("&nbsp;");
            	    
	            /*if (authorId == this.userId)//hide my own flag
	                $("#commentContent .arow_b3 .acolm_e1").remove();*/
	        });
            handleCommentPagingStaus();
        };
        this.asyncRequest(remoteSourceBridge, "url=" + remoteUrl, callback);            
    }

    function getContent(flag, postId)
    {
        var content = "Comment removed for violation of Terms of Use ({0})";
        var viewPost = "<br/><a href='javascript:comment.getSinglePost({0})'>View Post</a>"
        if (this.admin == "true")
            content += viewPost.format(postId);
        switch(flag){
            case 1:
                return content.format("off topic");
            case 2:
                return content.format("inflammatory");
            case 3:
                return content.format("advertising");
            case 4:
                return content.format("copyright content");
            case 5:
                return content.format("others");
        }
    }

    function handleCommentPagingStaus()
    {
        var totalComment = getCommentCount() - 1;
        if (!isNaN(totalComment) && index > parseInt(totalComment/comment.pageCount))
        {
            comment.getComments(parseInt(totalComment/comment.pageCount));
            return;
        }
        if(index == 0)
            $("#commentPrePage").hide();
        else
            $("#commentPrePage").show();
            
        if(isNaN(totalComment) || index >= parseInt(totalComment/comment.pageCount))
            $("#commentNextPage").hide();
        else
            $("#commentNextPage").show();
    }

    this.addComment = function(title, content, isTracked){
        var curUrl = document.location.href;
        var paraStr = "currentUserID={0}&articleID={1}&articleTitle={2}&articleUrl={3}&isTracked={4}&type={5}&commentContent=";
        var para = escape(paraStr.format(this.userId, this.articleId, escape(title), escape(curUrl), isTracked, this.articleType));  
        var url = "?url=" + escape(addCommentMethod) + "&para1=" + para;    
        var data = "para2=" + escape(content);
        
        $.ajax({type: "POST",
		        url: remoteSourceBridge + url,
		        data: data,
		        success: function(msg) {
                  var totalComment = getCommentCount();
			      updateAnchor(parseInt(totalComment/comment.pageCount));}
	        });
    }

    this.flagPost = function(postId, authorId, flagType)
    {
        var curUrl = document.location.href;
        var title = $("#mstarTitle h1").text();
        var paraStr = "postID={0}&postAuthorID={1}&flagUserID={2}&articleTitle={3}&articleUrl={4}&flagType={5}";
        var para = escape(paraStr.format(postId, authorId, this.userId, escape(title), escape(curUrl), flagType));
        var url = "url=" + escape(addFlagPostMethod + "?") + para;
        
        this.asyncRequest(remoteSourceBridge, url, function(){$("#ul"+postId).html(flagPostedUI);});
    }

    this.getPostUI = function(postId, authorId, flagger, hide)
    {
        if (this.CustId == "")
        {
          document.location.href = "https://members.morningstar.com/DotNet/LogIn.aspx?vurl=" + document.location.href;
          return ;
        }
        if (this.userId == 0)
        {
          document.location.href = "http://discussbeta.morningstar.com/NewSocialize/user/MSRegister.aspx?ReturnUrl=" + document.location.href;
          return ;
        }
        if($("#ul"+postId).html() == flagPostedUI)
            return;
        var paraStr = "postID={0}&currentUserID={1}";
        var para = escape(paraStr.format(postId, this.userId));
        var url = "url=" + escape(userHasReportedMethod + "?")+ para;
        
        var callback = function(xml)
        {
            var retrieveUI = "";
	        if (hide == true)
	            retrieveUI = adminFlagPostedUI;
	        if ($(xml).find("boolean").text() == "true")
	        {
	            if (this.admin == true)//remove flag always there
	               $("#ul"+postId).html((flagPostedUI + adminFlagPostUI + adminFlagPostedUI).format(postId, authorId));
	            else if (flagger == true)
	               $("#ul"+postId).html(flagPostedUI + adminFlagPostUI.format(postId, authorId));
	            else
                    $("#ul"+postId).html(flagPostedUI);
	        }
	        else
	        {
	            if (this.admin == true)//remove flag always there
	               $("#ul"+postId).html((flagPostUI + adminFlagPostUI + adminFlagPostedUI).format(postId, authorId));
	            else if (flagger == true)
	               $("#ul"+postId).html((flagPostUI + adminFlagPostUI).format(postId, authorId));
	            else
                    $("#ul"+postId).html(flagPostUI.format(postId, authorId));
	        }
        };
        
        this.asyncRequest(remoteSourceBridge, url, callback); 
    }

    this.setSecurities = function(tickers)
    {
        if(tickers == "")
        {
            $("#securitiesRelated .atitle_b1").html("Most Active Stocks");
            $("#disclosureStatement").remove();
            this.getMostActiveSecurities();
            return;
        }
        var paraStr = "?ticker={0}&qt=2&cb=?";
        var para = paraStr.format(tickers);
        var url = quoteservice + para;
        
        var dataLine = "<tr {6}><td class='B10'><a target='_blank' href='{5}{0}'>{0}</a></td><td align='right'>{1}</td>" + 
        "<td align='right'>{2}</td><td></td>" +
        "<td><img src='//im.mstar.com/im/{3}.gif' /></td>" +
        "<td align='center'><a href='{4}' class='tools_icon8'></a></td></tr>";
            
        $.getJSON(url + "&r=" + Math.round(Math.random()*100000), 
            function(data){
                var count = 1;
                $("#SecuritiesAfterThisLine").hide();
                
                $.each(data.Results, function(){
                    var rating = this.rating;
                    var reportLink = "#";
                    if(this.type == "ST")
                        reportLink = stockAnalystReport + this.ticker;
                    else if(this.type == "FE")
                        reportLink = fundETFAnalystReport + this.ticker;
                    else
                        reportLink = fundAnalystReport + this.ticker;
                    if (count++%2==0)    
                        $("#SecuritiesAfterThisLine").after(dataLine.format(this.ticker,this.price, this.change, rating, reportLink,quotePage, ""));
                    else
                        $("#SecuritiesAfterThisLine").after(dataLine.format(this.ticker,this.price, this.change, rating, reportLink,quotePage, "bgcolor=\'#e4f0ff\'"));
                });
                if(data.Results.length>0)
                    $("#securitiesRelated").css("display","block");
                else
                {
                    $("#SecuritiesAfterThisLine").show();
                    $("#SecuritiesAfterThisLine td").height(20);
                    $("#SecuritiesAfterThisLine img").attr("src", "//im.mstar.com/im/dot_clear.gif");
                }
            });
    }

    this.getMostActiveSecurities = function()
    {
        var url = "url=" + escape(homepageWebservice);
        
        this.asyncRequest(remoteSourceBridge, url, function(xml){
            var tickers = "";
            var count = 1;
            $(xml).find("Actives Symbol").each(function(){if(count++>10) return false; tickers += $(this).text() + ","});
            if(tickers.length>0)
                comment.setSecurities(tickers.substr(0, tickers.length-1));
            else
            {
                $("#SecuritiesAfterThisLine td").height(20);
                $("#SecuritiesAfterThisLine img").attr("src", "//im.mstar.com/im/dot_clear.gif");
            }
        }); 
    }

    this.removePost = function(postId, authorId, flagType)
    {
        var curUrl = document.location.href;
        var title = $("#mstarTitle h1").text();
        var paraStr = "postID={0}&postAuthorID={1}&flagUserID={2}&articleTitle={3}&articleUrl={4}&flagType={5}";
        var para = escape(paraStr.format(postId, authorId, this.userId, escape(title), escape(curUrl), flagType));
        var url = "url=" + escape(removeByFlagMethod + "?")+ para;
        
        this.asyncRequest(remoteSourceBridge, url, function(){}); 
    }

    this.retrievePost = function(postId,authorId)
    {
        var paraStr = "postID={0}&userIDRetrieveedBy={1}";
        var para = escape(paraStr.format(postId,this.userId));
        var url = "url=" + escape(retrievePostMethod + "?")+ para;
           
        this.asyncRequest(remoteSourceBridge, url, function(){
    		    $("#ul"+postId).html(adminFlagPostUI.format(postId, authorId).replace("<li>---</li>",""));
	            comment.getSinglePost(postId);
        }); 
    }

    this.getSinglePost = function(postId)
    {
        var paraStr = "postID={0}&currentUserID={1}";
        var para = escape(paraStr.format(postId));
        var url = "url=" + escape(getSinglePostMethod + "?")+ para;
        
        this.asyncRequest(remoteSourceBridge, url, function(xml){
			    var content = $(xml).find("Content").text();
			    $("#content" + postId).html(content);
        });
    }

    this.recommendArticle = function(postId)
    {
        if (this.CustId == "")
        {
          document.location.href = "https://members.morningstar.com/DotNet/LogIn.aspx?vurl=" + document.location.href;
          return ;
        }
        var paraStr = "guid={0}&articleID={1}&docType={2}";
        var para = escape(paraStr.format(CustID, this.articleId, this.articleType));
        var url = "url=" + escape(recommendArticle + "?")+ para;
        
        this.asyncRequest(remoteSourceBridge, url, function(xml){
            if ($(xml).find("int").text() == "0")//success
    	        comment.getComments(index);
    	    //else if($(xml).text() == "-2")//has recommended
    	        //alert("Sorry, you can recommend an article only once.Thank you.");
    	    //else
    	        //alert("Sorry, There is error.");
        });
    }
    
    this.RegisterUser = function(userName)
    {
        var paraStr = "userName={0}&guid={1}";
        var para = escape(paraStr.format(userName, CustID));
        var url = "url=" + escape(RegisterUserMethod + "?")+ para;
        
        this.asyncRequest(remoteSourceBridge, url, function(xml){
            if (parseInt($(xml).find("int").text())>3)//success
            {            
    	        comment.userId = parseInt($(xml).text());
    	    }
        });
    }

};//comment

/*
 *	String.format function
 *	by leen.name
 */
if(!String.prototype.format)
	String.prototype.format = function(){
		var param = arguments.length === 1 && typeof(arguments[0]) == "object" ? arguments[0] : arguments;
		var i = 0, result = "";
		for(var s; (s = this.indexOf("{", i)) !== -1;){
			result += this.slice(i, s);
			if(this[s+1] === "{"){
				i = s + 2;
				result += "{";
				continue;
			}
			var i = this.indexOf("}", s + 1);
			if(i === -1)
				throw "incorrect format: {0}".format(this);
			result += param[this.slice(s + 1, i++)];
		}
		return result + this.slice(i);
	}
if(!String.format)
	String.format = function(str){
		return String.prototype.format.apply(str, Array.prototype.slice.call(arguments, 1));
}



/* Javascript for Button Rollover  */
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

function setWSAction (tagRef)
{
	document.cookie = "wsaction=" + tagRef + "; expires=Wed, 31 Dec 2025 00:00:00 UTC" + "; path=/" + "; domain=morningstar.com"
}

function setAdClick (tagRef)
{
	if (tagRef == "click")
	{
		document.getElementById("adcontain1").style.overflow = "visible";
		if (!is_ie)	document.getElementById("ad1sm").style.overflow = "visible";
		document.getElementById("adcontain2").style.zIndex = "2";			
	}
	else if (tagRef == "noclick")
	{
		document.getElementById("adcontain1").style.overflow = "hidden"	;	
		document.getElementById("adcontain2").style.zIndex = "1";
		if (!is_ie) 
			document.getElementById("ad1sm").style.overflow = "hidden";		
	}
}

function log(tagRef)
{	
	var gifName;
	
	if(tagRef.name == "menu1")
	{
		setIfrWidth(575);
		gifName = "menu1";
		MM_showHideLayers('menu0','','show','menu2','','hide','menu3','','hide');
		
	}
	else if (tagRef.name == "menu4")
	{
		setIfrWidth(575);
		gifName = "menu2";
		MM_showHideLayers('menu0','','hide','menu2','','show','menu3','','hide')
	}
	else
	{
		setIfrWidth(575);
		gifName = "menu3";
		MM_showHideLayers('menu0','','hide','menu2','','hide','menu3','','show')
	}
	  
  setWSAction (tagRef.name);
  setAdClick("noclick");    
}

function logHide(tagRef)
{	
	var gifName;
	
	setIfrWidth(728);
	
	if(tagRef.name == "menu1")
	{
		gifName = "menu1";
		MM_showHideLayers('menu0','','hide','menu2','','hide','menu3','','hide');
	}
	else if (tagRef.name == "menu4")
	{
		gifName = "menu2";
		MM_showHideLayers('menu0','','hide','menu2','','hide','menu3','','hide')
	}
	else
	{
		gifName = "menu3";
		MM_showHideLayers('menu0','','hide','menu2','','hide','menu3','','hide')
	}
  	
  setWSAction("hide");
  setAdClick("click");   
}

function getIndexGraph(index) {

	var indexImg = document.getElementById("indexGraph");
	
  	indexImg.src = "/prodPages/include/index_" + index + ".png?dt=" + Math.random();
}
/* Javascript for Button Rollover end */
  
/* Javascript for change font size start */
function getElementsByClassName(sClass, sTag, oCont) {
    var result = [], list, i;
    var re = new RegExp("\\b" + sClass + "\\b", "i");
    oCont = oCont? oCont: document;
    if ( document.getElementsByTagName ) {
        if ( !sTag || sTag == "*" ) { // for ie5
            list = oCont.all? oCont.all: oCont.getElementsByTagName("*");
        } else {
            list = oCont.getElementsByTagName(sTag);
        }
        for (i=0; list[i]; i++) 
            if ( re.test( list[i].className ) ) result.push( list[i] );
    }
    return result;
}
 var changeFontSize = 0;
 var elemNeedLargerFont = new Array("titleLink","mstarDeck", "mstarArticleBasicInfo", "mstarContent", "div.acolx_a2|arow_a1");//headline, deck, byline, publish date, body and comments
 var elemDefaultFont = new Array(22,16,10,13,13);
 
 function largerFont() {
    
    changeFontSize +=2; 
    if (changeFontSize>6)
      changeFontSize = 0;
    var bits, col, oCont, elemControl, font;
    oCont = document.getElementById('commentContent');  
    for (var i=0;i<elemNeedLargerFont.length;i++)
    {
      var elem = elemNeedLargerFont[i];
      if ( elem.indexOf('.') != -1 ) 
      {
        bits = elem.split('.'); 
        col = getElementsByClassName( bits[1], bits[0], oCont);
        for (var j=0;j<col.length;j++)
        {
          elemControl = col[j];
          font = elemDefaultFont[i];//elemControl.style.fontSize.substring(0, 2);
          if (elemControl.style != undefined)
            elemControl.style.fontSize = font + changeFontSize + 'px';
        }
      }
      else
      {
        elemControl = document.getElementById(elem);
        font = elemDefaultFont[i];
        if (elemControl != null)
            elemControl.style.fontSize = font + changeFontSize + 'px';
      }
    }
}
/* Javascript for change font size end */

/* Javascript for flag dropdown in comments */
function showDropdown(evt,el)
{
   if(el == null)
       el = document.ulEle
   var display = el.getElementsByTagName("UL")[0].style.display;
   if(display == "none" || display == "")
   {
       el.getElementsByTagName("UL")[0].style.display="block";
       if(el.setCapture)
          el.setCapture(false);
       else
       {
          document.addEventListener("click",showDropdown,true);
          window.captureEvents(Event.CLICK);
       }
       document.ulEle = el;
   }
   else
   {
       el.getElementsByTagName("UL")[0].style.display="none";
       if(el.setCapture)
          el.releaseCapture();
       else
       {
          document.removeEventListener("click",showDropdown,true);
          window.releaseEvents(Event.CLICK);
          evt.cancelBubble = true;
       }
       //when click another dropdown, we should show the clicked dropdown.
       var srcEle = (evt.srcElement?evt.srcElement:evt.target); 
       if(srcEle.className == "adrop1h") srcEle = srcEle.parentNode;
       if(srcEle.className != "adrop1") return;
       if(srcEle == el) return;
       showDropdown(null,srcEle);
   }
}

/* Javascript for multi-page   start */
function getPagingControl(selected, count)
{
    var pageUI = "<a class='pageOff' href='javascript:statusPart(-)'>-</a>";
    var res = "";
    var selectedUI = "<div class='pageOn'>-</div>";
    for (var i = count; i > 0; i-=1) {
      if(i==selected)
        res = res + selectedUI.replace(/-/g, i);
      else
        res = res + pageUI.replace(/-/g, i);
    }
    return res;
}

function gotoPagingPart(newPart)
{
    var reg = /\d+/;
    var totalPage = parseInt(reg.exec($("#pagingControl").html()));
    if (!isNaN(totalPage) && newPart>totalPage)
      newPart = totalPage;
    $("#mstarContent .part" + curPart).hide();
    $("#mstarContent .part" + newPart).show();

    //reset paging control
    var reg = /\d+/;
    var totalPage = reg.exec($("#pagingControl").html());
    $("#pagingControl").html(getPagingControl(newPart, totalPage));            
}

function statusPart(newPart)
{
    //scroll to top
    if (document.documentElement.scrollTop)
      document.documentElement.scrollTop = 270;
    else
      document.body.scrollTop = 270;

    updateAnchor(index, newPart);
}            

function getAnchorPart()
{
    var reg = /part=\d+/;
    var partStr = reg.exec(document.location.hash);
    var part;
    if (partStr == null)
      part = 1;
    else
      part = parseInt(partStr.toString().replace("part=", ""));  
      
    return part;
}

function getMStarContent()
{
    var reg = /\d+/;
    var totalPage = parseInt(reg.exec($("#pagingControl").html()));
    if (isNaN(totalPage))
      totalPage = 1;
    var res = "";
    var regscript = /<script[^>]*>(\w|\W)*?<\/script[^>]*>/g;
    for(i=0;i<totalPage;i++)
      $("#mstarContent .part" + (i+1)).each(function(){res += $(this).html().replace(regscript,"")});

    return res;
}
/* Javascript for multi-page   end */

/* Javascript for multi-page comment  start */
function getCurrentCommentPage()
{
    var re = /page=\d+/;
    var indexStr = re.exec(document.location.hash);
    var cIndex;
    if (indexStr == null)
      cIndex = 0;
    else
      cIndex = parseInt(indexStr.toString().replace("page=", ""));
      return cIndex;
}

function statusAddCommentBox()
{
    if (CustId == "")
    {
      $("#addComment .arow_a1").hide();
      $("#addComment .jqAddComent1").hide();
      $("#addComment .jqAddComent2").show();
    }
    else
    {
      $("#addComment .arow_a1").show();
      $("#addComment .jqAddComent1").show();
      $("#addComment .jqAddComent2").hide();
    }        
}

function updateAnchor(newIndex, newPart)
{
    var curAnchor = document.location.hash;
    var newAnchor;
    if (curAnchor.indexOf("page=")>0 && curAnchor.indexOf("part=")>0)
        newAnchor = curAnchor.replace(/page=(\d)*/, "page="+newIndex).replace(/part=(\d)*/, "part="+newPart);
    else if (curAnchor.indexOf("page=")>0)
        newAnchor = curAnchor.replace(/page=(\d)*/, "page="+newIndex) + "&part="+newPart;
    else if (curAnchor.indexOf("part=")>0)
        newAnchor = curAnchor.replace(/part=(\d)*/, "page="+newIndex + "&part="+newPart); 
    else if (curAnchor.length>2)
        newAnchor = (curAnchor + "&page="+newIndex + "&part="+newPart);
    else
        newAnchor = (curAnchor + "#page="+newIndex + "&part="+newPart);

    newAnchor = newAnchor.replace(/[&,#]part=undefined/,"");
    $.historyLoad(newAnchor.replace("#", ""));
}      

function getPrePageComment()
{
    if(index == 0)
    {
      alert("This is the first page.");
      return;
    }
    index -= 1;
    updateAnchor(index);
}
function getNextPageComment()
{
    var totalComment = getCommentCount() - 1;
    if(isNaN(totalComment) || index >= parseInt(totalComment/comment.pageCount))
    {
      alert("This is the last page.");
      return;
    }
    index += 1;
    updateAnchor(index);
}
function getCommentCount()
{
    var countStr = $.trim($("#commentPaging").text()).split(" ");
    if (countStr.length>2)
      return parseInt(countStr[2]);
    else
      return 0;
}
function post(){
    if (CustId == "")
    {
      document.location.href = "https://members.morningstar.com/DotNet/LogIn.aspx?vurl=" + document.location.href;
      return ;
    }
      
    if (comment.userId == 0)
    {
      $('#ex4').jqm({ajax:'OL-discuss.html'});
      $('#ex4').jqmShow();
      return ;
    }
    var content = $("#commentText").attr('value');
    if (1>content.length)
    {
      alert("please add some comment.");
      return;
    }
    var isTracked = $('#emailMe').is(':checked');
    comment.addComment(title, content, isTracked);
    $("#commentText").attr('value','');
    $('#emailMe').attr('checked',false);
} 
/* Javascript for multi-page comment  end */
   
/* Javascript for overlay  start */
/*depends on jquery and jqModal.js  */

//$("body").width($(window).width()-18);

//$().ready(function() {
//    var t = $('#ex4 div.jqmdMSG');

//    $('#ex4').jqm({
//        trigger: 'a.ex4Trigger',
//        target: t,
//        modal: true,
//        onHide: function(h) {
//            t.html('Please Wait...');
//            h.o.remove(); // remove overlay
//            h.w.fadeOut(888); // hide window
//        },
//        overlay: 50});
//        
//     $(window).resize(function(){
//        $("body").width($(window).width()-18);
//    });
//});

/* Javascript for overlay  end */

