/**
 * @author tlee
 * 3/27/2007
 */
  //this common js file creates the member folder tree and populate the content assiciated with the folders.
 //require breakjon.js



// NEED TO IMPLEMENT
/*
    //this function to display the content detail
    function displayContentsFromFolder(folderId)
    {
        //write your own content detail display code here
    }
*/

function BreakFolder(pEntryptedMemberId){
    this.folder_css_class = "fea_folder";
    this.subfolder_css_class = "fea_subfolder";
    var folderJSON = new BreakJSON();
    var contentJSON = new BreakJSON();
    this.entryptedMemberId = pEntryptedMemberId;
    var m_divFolderId = "";
    var m_uniqueFolderIdPrefix = "";
    var m_defaultFolderImg = "http://media1.break.com/static/live/v1/img/mybreak/misc_folder_icon.gif";
    var m_currentFolderId = 0;
	var m_maxFolderNameLength = 12;

    BreakFolder.prototype.renderFolderTree  = function(callbackFunc, pDivFolderId, pUniqueFolderIdPrefix){
        m_divFolderId = pDivFolderId;
        m_uniqueFolderIdPrefix = pUniqueFolderIdPrefix;
        getFolderDataASHX(this.entryptedMemberId, callbackFunc);
    }

    BreakFolder.prototype.renderFolderTreeInternal  = function(callbackFunc, pDivFolderId, pUniqueFolderIdPrefix){
        m_divFolderId = pDivFolderId;
        m_uniqueFolderIdPrefix = pUniqueFolderIdPrefix;
        getFolderDataInternalASHX(this.entryptedMemberId, callbackFunc);
    }

    BreakFolder.prototype.getDefaultFolderContent  = function(PageNumber, PageSize, SortedBy, callbackFunc){
        getContentByMemberFolderASHX(this.entryptedMemberId, 0, 1, PageSize, SortedBy, callbackFunc);
    }

    BreakFolder.prototype.getFolderContent  = function(FolderId, PageNumber, PageSize, SortedBy, callbackFunc){
        getContentByMemberFolderASHX(this.entryptedMemberId, FolderId, PageNumber, PageSize, SortedBy, callbackFunc);
    }

	BreakFolder.prototype.getFolderContentByType  = function(FolderId, PageNumber, PageSize, SortedBy, MimeType, callbackFunc){
        getContentTypeByMemberFolderASHX(this.entryptedMemberId, FolderId, PageNumber, PageSize, SortedBy, MimeType, callbackFunc);
    }

    BreakFolder.prototype.getFolderContentInternal  = function(FolderId, PageNumber, PageSize, SortedBy, callbackFunc){
        getContentByMemberFolderInternalASHX(this.entryptedMemberId, FolderId, PageNumber, PageSize, SortedBy, callbackFunc);
    }

    BreakFolder.prototype.renderPaginationControl  = function(JSONContent, divId, rowsPerPage){
        document.getElementById(divId).innerHTML = renderContentPagination(JSONContent, rowsPerPage);
    }

    BreakFolder.prototype.renderSortControl  = function(JSONContent, divId){
        document.getElementById(divId).innerHTML = renderSortControl(JSONContent);
    }

    BreakFolder.prototype.activateFolderName  = function(curFolderId, divFolderId, uniqueFolderIdPrefix){
       activateFolderName(curFolderId, divFolderId, uniqueFolderIdPrefix);
    }

    BreakFolder.prototype.deactivateFolderName  = function(curFolderId, divFolderId, uniqueFolderIdPrefix){
       deactivateFolderName(curFolderId, divFolderId, uniqueFolderIdPrefix);
    }



    BreakFolder.prototype.sendEnd = function(){
    }


    //-----ASHX---------------------------------------------------------------------------------------------------------------------------------------
    function getFolderDataASHX(memberId, callbackFunc)
    {
        if(memberId.length > 0 )
        {
           folderJSON.sendBegin("http://profile-websvc.break.com/Membership/Handlers/Profile/Folders/FolderHandler.ashx?invoke=getmemberfoldertreepublic&siteId=1&mid="+memberId, callbackFunc);
        }
    }

    function getFolderDataInternalASHX(memberId, callbackFunc)
    {
        if(memberId.length > 0 )
        {
            folderJSON.sendBegin("http://profile-websvc.break.com/Membership/Handlers/Profile/Folders/FolderHandler.ashx?invoke=getmemberfoldertree&siteId=1&mid="+memberId, callbackFunc);
        }
    }

    function getContentByMemberFolderASHX(memberId, folderId, PageNumber, PageSize, SortedBy, callbackFunc)
    {
        if(memberId.length > 0 )
        {
            contentJSON.sendBegin("http://profile-websvc.break.com/Membership/Handlers/Profile/Folders/FolderHandler.ashx?invoke=getcontentbymemberfolderpublic&siteId=1&mid="+memberId+"&ps="+PageSize+"&pn="+PageNumber+"&fid="+folderId+"&sb="+SortedBy, callbackFunc);
        }
    }

	function getContentTypeByMemberFolderASHX(memberId, folderId, PageNumber, PageSize, SortedBy, MimeType, callbackFunc)
    {
        if(memberId.length > 0 )
        {
            contentJSON.sendBegin("http://profile-websvc.break.com/Membership/Handlers/Profile/Folders/FolderHandler.ashx?invoke=getcontentbymemberfolderpublic&siteId=1&mid="+memberId+"&ps="+PageSize+"&pn="+PageNumber+"&fid="+folderId+"&sb="+SortedBy+"&mtype="+MimeType, callbackFunc);
        }
    }
    function getContentByMemberFolderInternalASHX(memberId, folderId, PageNumber, PageSize, SortedBy, callbackFunc)
    {
        if(memberId.length > 0 )
        {
            contentJSON.sendBegin("http://profile-websvc.break.com/Membership/Handlers/Profile/Folders/FolderHandler.ashx?invoke=getcontentbymemberfolder&siteId=1&mid="+memberId+"&ps="+PageSize+"&pn="+PageNumber+"&fid="+folderId+"&sb="+SortedBy, callbackFunc);
        }
    }

    //-----Folders------------------------------------------------------------------------------------------------------------------------------------
    function activateFolderName(curFolderId, divFolder, uniqueFolderIdPrefix)
    {
        m_currentFolderId = curFolderId;
        var linkFolderDivId = uniqueFolderIdPrefix + curFolderId;
        var activeFolderDivId = uniqueFolderIdPrefix + "_active_" + curFolderId;
        var divFeatureFolderName = "name_" + uniqueFolderIdPrefix;
        var divFeatureFolderActiveName = "name_active_" + uniqueFolderIdPrefix;

        var parentDivFolder = document.getElementById(divFolder);
        var divChildren = parentDivFolder.getElementsByTagName("div");

        if(divChildren)
        {
            for(var i=0; i < divChildren.length; i++)
            {
                if(divFeatureFolderName == divChildren[i].getAttribute("name") )
                {
                    toggleBox(divChildren[i].getAttribute("id"),1);
                }

                if(divFeatureFolderActiveName == divChildren[i].getAttribute("name") )
                {
                     toggleBox(divChildren[i].getAttribute("id"),0);
                }

                if(activeFolderDivId == divChildren[i].getAttribute("id") )
                {
                    toggleBox(linkFolderDivId,0);
                    toggleBox(activeFolderDivId,1);
                }
            }
        }
    }


    function deactivateFolderName(curFolderId, divFolder, uniqueFolderIdPrefix)
    {
        m_currentFolderId = curFolderId;
        var linkFolderDivId = uniqueFolderIdPrefix + curFolderId;
        var activeFolderDivId = uniqueFolderIdPrefix + "_active_" + curFolderId;
        toggleBox(linkFolderDivId,1);
	toggleBox(activeFolderDivId,0);
    }

    BreakFolder.prototype.renderContentFolders = function(jsonData)
    {
       if(jsonData.Response.Code == 0)
       {
           var Folders =  jsonData.Response.Folders;
           var content = new Array();

           if(typeof(Folders.length) != "undefined")
           {
               for(var r=0; r<Folders.length; r++)
               {
		            content[content.length] = this.renderOneContentFolder(Folders[r], m_uniqueFolderIdPrefix);
               }
           }
           else
           {
                content[content.length] = this.renderOneContentFolder(Folders, m_uniqueFolderIdPrefix);
           }
           document.getElementById(m_divFolderId).innerHTML = content.join('');
           activateFolderName(m_currentFolderId, m_divFolderId, m_uniqueFolderIdPrefix);
       }
    }

    BreakFolder.prototype.renderOneContentFolder = function (pFolder, uniqueFolderIdPrefix)
    {
        var folderDivId = uniqueFolderIdPrefix + pFolder.FolderID;
        var activeFolderDivId = uniqueFolderIdPrefix + "_active_" + pFolder.FolderID;
        var backGroundFolderImg = getAttributeValue(pFolder.FolderAttribute, "BackGroundImage");
        var divFeatureFolderName = "name_" + uniqueFolderIdPrefix;
        var divFeatureFolderActiveName = "name_active_" + uniqueFolderIdPrefix;

        var content = new Array();

        if(backGroundFolderImg == "")
            backGroundFolderImg = m_defaultFolderImg;

        //The linkable verion
        content[content.length] = "<table width=\"150\" style=\"margin:0px;padding:0px;\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\"><tr valign=\"top\" style=\"margin:0px;padding:0px;\"><td style=\"margin:0px;padding:0px;\"><div name=\"";
        content[content.length] = divFeatureFolderName;
        content[content.length] = "\" id=\"";
        content[content.length] = folderDivId;
        content[content.length] = "\" class=\"" + this.folder_css_class + "\">";
        content[content.length] = "<a href=\"javascript:displayContentsFromFolder(";
        content[content.length] = pFolder.FolderID;
        content[content.length] = ");\">";
        content[content.length] = "<img src=\"";
        content[content.length] = backGroundFolderImg;
        content[content.length] = "\" border=\"0\" style=\"margin-right:3px;\" /></a>";
        content[content.length] = "<a href=\"javascript:displayContentsFromFolder(";
        content[content.length] = pFolder.FolderID;
        content[content.length] = ");\"";
        content[content.length] = " class=\"breakpro_link\" style=\"font-family:arial;font-size:11px;\" title=\"";
        content[content.length] = pFolder.FolderName;
        content[content.length] = "\" >";
        content[content.length] = limitText(pFolder.FolderName, m_maxFolderNameLength);
        content[content.length] = "</a></div></td></tr></table>";

        //The active version
        content[content.length] = "<table width=\"150\" style=\"margin:0px;padding:0px;\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\"><tr valign=\"top\" style=\"margin:0px;padding:0px;\"><td style=\"margin:0px;padding:0px;\"><div name=\"";
        content[content.length] = divFeatureFolderActiveName;
        content[content.length] = "\" style=\"display:none;\" id=\"";
        content[content.length] = activeFolderDivId;
        content[content.length] = "\" class=\"" + this.folder_css_class + "\">";
        content[content.length] = "<img src=\"";
        content[content.length] = backGroundFolderImg;
        content[content.length] = "\" border=\"0\" style=\"margin-right:3px;\" /><b><span style=\"font-family:arial;font-size:11px;color:#000;\" title=\"";
        content[content.length] = pFolder.FolderName;
        content[content.length] = "\" >";
        content[content.length] = limitText(pFolder.FolderName, m_maxFolderNameLength);
        content[content.length] = "</span></b></td></tr></table></div>";
        return content.join('');
    }

    var numb = '0123456789';
    var lwr = 'abcdefghijklmnopqrstuvwxyz';
    var upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

    function isValid(parm,val)
    {
      if (parm == "")
        return false;
      for (i=0; i<parm.length; i++)
      {
        if (val.indexOf(parm.charAt(i),0) == -1)
            return false;
      }
      return true;
    }

    function isLower(parm) {return isValid(parm,lwr);}
    function isUpper(parm) {return isValid(parm,upr);}

    function getFolderNameLength(foldername)
    {
        var maxlength = 30.0;
        var length = 0.0;
        var charCount=0;

        if(foldername.length <= m_maxFolderNameLength)
        {
            return m_maxFolderNameLength;
        }
        else
        {
            for(charCount=0; charCount < foldername.length; charCount++)
            {
                var ch = foldername.charAt(i);
                if (ch == "W")
                {
                    length = length + 3;
                }
                else if(isUpper(ch)|| ch == "w")
                {
                    length = length + 2.4;
                }
                else
                {
                    length = length + 1.5;
                }

                if(parseFloat(length) >= parseFloat(maxlength))
                {
                    break;
                }
            }
        }
        return charCount;
    }

	function isBreakMoneyActive ()
	{
		if (document.getElementById ("breakmoney") != null)
		{
	
			return true;
		}
		else
			return false;
			//return false;
	}
	
    //---Content Detail-------------------------------------------------------------------------------------------------------------------------
    function renderSortControl(pContent)
    {
        
		var content = new Array();
        content[content.length] = "Sort:  ";
        
		
		if (isBreakMoneyActive() == true)
		{
			if (pContent.SortedBy == 4)
			{
			
				content[content.length] = "<b>Earnings</b> |";
			
			}
			else
			{
				content[content.length] = "<a href='javascript:displayFolderContents(";
				content[content.length] = pContent.FolderID;
				content[content.length] = ",";
				content[content.length] = 1;
				content[content.length] = ",";
				content[content.length] = 4;
				content[content.length] = ")' class=\"breakpro_link\">Earnings</a> | ";
			
			}
		} 
		if(pContent.SortedBy == 0)
        {
            content[content.length] = "<b>Views</b>";
        }
        else
        {
            content[content.length] = "<a href=\"javascript:displayFolderContents(";
            content[content.length] = pContent.FolderID;
            content[content.length] = ",";
            content[content.length] = 1;
            content[content.length] = ",";
            content[content.length] = 0;
            content[content.length] = ");\" class=\"breakpro_link\">Views</a>";
        }

        if(pContent.SortedBy == 1)
        {
            content[content.length] = " | <b>Date</b>";
        }
        else
        {
            content[content.length] = " | <a href=\"javascript:displayFolderContents(";
            content[content.length] = pContent.FolderID;
            content[content.length] = ",";
            content[content.length] = 1;
            content[content.length] = ",";
            content[content.length] = 1;
            content[content.length] = ");\" class=\"breakpro_link\">Date</a>";
        }

        if(pContent.SortedBy == 2)
        {
            content[content.length] = " | <b>Ratings</b>";
        }
        else
        {
            content[content.length] = " | <a href=\"javascript:displayFolderContents(";
            content[content.length] = pContent.FolderID;
            content[content.length] = ",";
            content[content.length] = 1;
            content[content.length] = ",";
            content[content.length] = 2;
            content[content.length] = ");\"  class=\"breakpro_link\">Ratings</a>";
        }

        if(pContent.SortedBy == 3)
        {
            content[content.length] = " | <b>Comments</b>";
        }
        else
        {
            content[content.length] = " | <a href=\"javascript:displayFolderContents(";
            content[content.length] = pContent.FolderID;
            content[content.length] = ",";
            content[content.length] = 1;
            content[content.length] = ",";
            content[content.length] = 3;
            content[content.length] = ");\"  class=\"breakpro_link\">Comments</a>";
        }

        return content.join('');
    }

    function renderContentPagination(pContent, rowsPerPage)
    {
        var totalMsg    = parseInt(pContent.TotalRecords);
        var totalPages  = Math.ceil(totalMsg/rowsPerPage);
        var curPageNum  = parseInt(pContent.PageNumber);
        var prevPageNum = 0;
        var nextPageNum = 0;
        if (curPageNum == 1 )
            prevPageNum = 0;
        else
            prevPageNum = curPageNum -1;

        if (curPageNum == totalPages)
            nextPageNum = 0;
        else
            nextPageNum = curPageNum + 1;

        var maxPageNum = 10;
        var ArrPageNums = GetPageNumArray(curPageNum, totalPages, maxPageNum);

        var content = new Array();
        content[content.length] = "Page: ";

        if (totalPages > maxPageNum)
        {
	        content[content.length] = renderOnePageNumber(pContent.FolderID, 1, ArrPageNums[i], pContent.SortedBy);
	        content[content.length] = "&nbsp;";
        }

        if (prevPageNum > 0)
        {
			content[content.length] = renderOnePageNumber(pContent.FolderID, 1, "1", pContent.SortedBy);
            content[content.length] = renderOnePageNumber(pContent.FolderID, prevPageNum, "<<", pContent.SortedBy);
        }

	    for(var i=0; i<ArrPageNums.length; i++)
	    {
	        if (curPageNum == ArrPageNums[i])
	        {
	            content[content.length] =ArrPageNums[i] + "&nbsp;";
	        }
	        else if (ArrPageNums[i] > 0)
	        {
	            content[content.length] = renderOnePageNumber(pContent.FolderID, ArrPageNums[i], ArrPageNums[i], pContent.SortedBy);
	        }
	    }

        if (nextPageNum > 0)
        {
            content[content.length] = renderOnePageNumber(pContent.FolderID, nextPageNum, ">>", pContent.SortedBy);
        }

        if (totalPages > maxPageNum && curPageNum != totalPages)
        {
            content[content.length] = renderOnePageNumber(pContent.FolderID, totalPages, totalPages, pContent.SortedBy);
        }

        return content.join('');
    }

    function renderOnePageNumber(pFolderId, pPageId, pDisplayText, pSortedBy)
    {
        var content = new Array();
        content[content.length] = " <a class=\"breakpro_link\" href=\"javascript:displayFolderContents(";
        content[content.length] = pFolderId
        content[content.length] = ","
        content[content.length] = pPageId
        content[content.length] = ","
        content[content.length] = pSortedBy
        content[content.length] = ");\">"
        content[content.length] = pDisplayText
        content[content.length] = "</a>&nbsp;" ;
        return content.join('');
    }


    function getAttributeValue(folderAttributes, attribute)
    {
        var result = "";
        var arrayAttributes = folderAttributes.split(",");
        for(i=0; i < arrayAttributes.length; i++)
        {
            var arrayAtt = arrayAttributes[i].split("=");
            if(attribute.toUpperCase() == arrayAtt[0].toUpperCase())
            {
                result = arrayAtt[1];
                break;
            }
        }
        return result;
    }
}

//-----Util functions---------------------------------------------------------------------------------------------------------------------------

//curPageNum --  the current page num displayed
//totalPages --  the number of pages available
//maxPageNum --  the number of pages to be displayed at one time.
function GetPageNumArray(curPageNum, totalPages, maxPageNum)
{
   var i = 0;
   var ArrPageNums = new Array(maxPageNum);

   //initialize the array to -1
   for(i=0; i<maxPageNum; i++)
        ArrPageNums[i] = -1;

   if(totalPages <= maxPageNum )
   {
       for(i=0; i<totalPages; i++)
            ArrPageNums[i] = i + 1;
   }
   else
   {
        // set the curPageNum in the middle
        if (curPageNum > 5)
        {
            pagesAhead = totalPages - curPageNum;

            if (pagesAhead > 5)
            {
                 for(i=0;i<maxPageNum;i++)
                    ArrPageNums[i] =  curPageNum - 4 + i;
            }
            else
            {
                for(i=0;i<maxPageNum;i++)
                    ArrPageNums[i] =  totalPages - 9 + i;
            }
        }
        else
        {
           for(i=0; i<maxPageNum; i++)
                ArrPageNums[i] = i + 1;
        }
   }

   return ArrPageNums;
}

function getSelfMemberId()
{
    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 DateFormatWhenPosted(dtDateTime)
{
    var Now = new Date();
    var Created = Date.parse(dtDateTime);
    var Minutes = (Now - Created)/60000;
    var Hours   = Minutes/60;
    var Days    = Hours/24;
    var Months  = Days/30;

    if (Months > 1) return Math.floor(Months) + " months ago";
    if (Months == 1) return " 1 month ago";
    if (Days > 1) return Math.floor(Days) + " days ago";
    if (Days == 1) return  " 1 day ago";
    if (Hours > 1) return Math.floor(Hours) + " hours ago";
    if (Hours == 1) return " 1 hour ago";
    if (Minutes > 1) return Math.floor(Minutes) + " minutes ago";
    if (Minutes == 1) return " 1 minute ago";
    return "0 minutes ago";
}

function limitText(text, MaxDescLength)
{
    if(text.length <= MaxDescLength)
        return text;
    else
        return text.substring(0,MaxDescLength) + "...";
}