

/*   -----------------   START : Sample Relationship Data   -----------------   */


//the following relational data can be updated programmatically assigning new data or changing manually below values


// To show the pop up boxes in the prediction winner section, please remove the condition "if( numTier != 5 )" in ShowPrizeBreakDown function.

/*
var treePrizeBreakDown = new Array();
treePrizeBreakDown[1] = {
                            "Idea"  : {"I1": 1}                                     //Idea - Mary Smith
                        };
treePrizeBreakDown[2] = {
                            "Idea"  : {"I1": 2},                                    //Idea - Jim Jones
                            "Pitch" : {"I1-P1": 4},                                 //Pitch - Dan Roundfield
                            "Video" : {"I1-P1-V1": 1}                               //Video - Bob Grich,        Video - Ned Yost
                        };
treePrizeBreakDown[3] = {
                            "Idea"  : {"I1": 3},                                    //Idea - Heather Stone
                            "Pitch" : {"I1-P1": 3},                                  //Pitch - Cedric Maxwell
                            "Video" : {"I1-P1-V1": 1}
                        };
treePrizeBreakDown[4] = {
                            "Idea"  : {"I1": 4},                                    //Idea - Steve Balboni
                            "Pitch" : {"I1-P1": 1,          "I1-P2": 2},            //Pitch - JJ MacLaughlin,   Pitch - Steve Kerr
                            "Video" : {"I1-P1-V1": 1}                               //Video - Bucky Dent,       Video Fred Lynn
                        };
treePrizeBreakDown[5] = {
                            "Idea"  : {"I1": 5},                                    //Idea - Billy Paultz
                            "Pitch" : {"I1-P1": 5},                                 //Pitch - Artis Gilmore
                            "Video" : {"I1-P1-V1": 1}                               //Video - Joe Smith
                        };
*/

/*   -----------------   END : Sample Relationship Data   -----------------   */




var prizePrefixId = { 1 : "IDEA", 2 : "IDEA_MostViewed", 3 : "IDEA_Predictions", 4 : "PITCH", 5 : "PITCH_MostViewed", 6 : "PITCH_Predictions", 7 : "VIDEO", 8 : "VIDEO_MostViewed", 9 : "VIDEO_Predictions" };
var prizeTotalCnt = { 1 : "5", 2 : "5", 3 : "5", 4 : "5", 5 : "5", 6 : "5", 7 : "5", 8 : "5", 9 : "5" };
var prizeTitle    = { 1 : "Idea", 2 : "Idea_MostViewed", 3 : "Idea_Predictions", 4 : "Pitch", 5 : "Pitch_MostViewed", 6 : "Pitch_Predictions", 7 : "Video", 8 : "Video_MostViewed", 9 : "Video_Predictions" };
var prizeInitial  = { 1 : "Idea", 2 : "Idea_MostViewed", 3 : "Idea_Predictions", 4 : "Pitch", 5 : "Pitch_MostViewed", 6 : "Pitch_Predictions", 7 : "Video", 8 : "Video_MostViewed", 9 : "Video_Predictions" };
var phaseMapping  = {1 : 1, 2 : 1, 3 : 1, 4 : 2, 5 : 2, 6 : 2, 7 : 3, 8 : 3, 9 : 3 };


//event attachement
if (window.attachEvent)
{
    window.attachEvent("onload", SetBreakDown);
}
else
{
    window.onload = SetBreakDown;
}


function SetBreakDown()
{
    //prize break down
    var popup = "<div class='dim'></div><div class='breakdown-container-on'><div class='place'></div><div class='point-down'></div><div class='popup-data'></div></div><div class='actual-data'></div>";
    var i = 1;
    while(prizePrefixId[i])
    {
        for(j = 1; j <= prizeTotalCnt[i]; j++)
        {
            var wId = prizePrefixId[i] + j;
            var wEl = YAHOO.util.Dom.get(wId);
            if (wEl) {
                var data = wEl.innerHTML;
                wEl.innerHTML = popup;
                YAHOO.util.Dom.getElementsByClassName("actual-data", "div", wEl)[0].innerHTML = data;
                YAHOO.util.Dom.getElementsByClassName("popup-data", "div", wEl)[0].innerHTML = data;
                SetOpacity(YAHOO.util.Dom.getElementsByClassName("dim", "div", wEl)[0]);
            }
        }
        i++;
    }

    //popup
    popup = "<div id='popup-container'>"
           +"    <div id='popup-point' class='point-right'></div>"
           +"    <div class='popup-top'><div class='popup-close'><a href='#' onclick='HidePrizeBreakDown(); return(false);' title='Close'>Close</a></div></div>"
           +"    <div class='popup-mid'>"
           +"        <div id='popup-row-content0' class='phase-box phase-total'></div>"
           +"        <div id='popup-row-content1' class='phase-box phase-alt'></div>"
           +"        <div id='popup-row-content2' class='phase-box'></div>"
           +"        <div id='popup-row-content3' class='phase-box phase-alt'></div>"
           +"        <div id='popup-row-content4' class='phase-box'></div>"
           +"        <div id='popup-row-content5' class='phase-box phase-alt'></div>"
           +"        <div id='popup-row-content6' class='phase-box'></div>"
           +"        <div id='popup-row-content7' class='phase-box phase-alt'></div>"
           +"        <div id='popup-row-content8' class='phase-box'></div>"
           +"    </div>"
           +"    <div class='popup-bot'></div>"
           +"</div>";
    var container = YAHOO.util.Dom.getElementsByClassName("prizeBreakDownTop", "div", YAHOO.util.Dom.get("prizeBreakDown"));
    if (container && container.length != 0) {
        container[0].innerHTML += popup;
        HidePopup();
    }
}

function ShowPrizeBreakDown(target)
{
    //dim out the section
    SetBreakDownDim();

    //find which tier selected
    var numTier = 1
    var numElmId = 0;

    while(prizePrefixId[numTier])
    {
        var prefix = target.id.substring(0, target.id.length-1);
        if(prizePrefixId[numTier] == prefix)
        {
            numElmId = target.id.replace(prefix, "");
            break;
        }
        numTier++;
    }

    var numTree = 1;
    var path = "";
    var newPath = {"Path" : ""};
    while(treePrizeBreakDown[numTree])
    {
        newPath = FindPath(numTree, numTier, path, prefix, numElmId);
        if(newPath["Path"] != "")
            break;
        numTree++;
    }

    if(newPath["Path"] != "")
    {
        path = newPath["Path"];
        numTier = newPath["NumTier"];
        numTree = newPath["NumTree"];
    }



    //data available in tree
    if(treePrizeBreakDown[numTree])
    {
        if(treePrizeBreakDown[numTree][prizeTitle[numTier]])
        {
            if(treePrizeBreakDown[numTree][prizeTitle[numTier]][path])
            {
                if(treePrizeBreakDown[numTree][prizeTitle[numTier]][path] == numElmId)
                {
                    ShowBreakDown(numElmId, numTier, numTree, path);
                    ShowSameSubmission(numTier, target);
                    if(path.indexOf("-") != -1)
                    {
                        var topId = ShowBreakUp(numTier, numTree, path);
                    }

                    ShowPopup(numElmId, numTier, numTree);
                    SetPopupPosition(target, numElmId);
                    return;
                }
            }
        }
    }

    //not avaiable in tree
    HidePopup();
    ShowBreakDown(numElmId, numTier, 0);
    ShowSameSubmission(numTier, target);
    ShowPopup(numElmId, numTier, 0);
    SetPopupPosition(target, numElmId);
    //----------------------------------------------------------------------
}

function ShowBreakUp(numTier, numTree, path)
{
    var paths = path.split("-");
    var newpath = "";
    var lastId = 0;
    for(i = 0; i < paths.length - 1; i++)
    {
        newpath += paths[i];
        numTier = 1;
        while (prizeInitial[numTier]) {
            if (paths[i].indexOf(prizeInitial[numTier]) != -1) {
                break;
            }
            numTier = numTier + 1;
        }
        var idNum = treePrizeBreakDown[numTree][prizeTitle[numTier]][newpath];
        var wEl = YAHOO.util.Dom.get(prizePrefixId[numTier] + idNum);
        if (wEl) {
          wEl.className = wEl.className.replace("popup-dim", "popup-show");
        }
        lastId = idNum;
        newpath += "-";
    }
    return(lastId);
}

function FindPath(numTree, numTier, path, prefix, numElmId)
{
    var dummy = {"Path" : ""};
    if(treePrizeBreakDown[numTree])
    {
        if(treePrizeBreakDown[numTree][prizeTitle[numTier]])
        {
            for (var key in treePrizeBreakDown[numTree][prizeTitle[numTier]]) {
                if (treePrizeBreakDown[numTree][prizeTitle[numTier]][key] == numElmId) {
                    return ({"NumTree" : numTree, "NumTier" : numTier, "Path" : key});
                }
            }
        }
    }
    return(dummy);
}

function ShowBreakDown(numElmId, numTier, numTree, path)
{
    var hasBreakDown = false;

    if(prizePrefixId[numTier])
    {
        //not available in tree
        if(numTree == 0)
        {
            var idNum = numElmId;
            var wEl = YAHOO.util.Dom.get(prizePrefixId[numTier] + idNum);
            if (wEl) {
              wEl.className = wEl.className.replace("popup-dim", "popup-show");
              hasBreakDown = true;
              YAHOO.util.Dom.getElementsByClassName("point-down", "div", wEl)[0].style.display = "none";
            }
        }
        else if(treePrizeBreakDown[numTree])
        {
            //available in tree
            if(numElmId != 0)
            {
                var idNum = numElmId;
                var wEl = YAHOO.util.Dom.get(prizePrefixId[numTier] + idNum);
                if (wEl) {
                    wEl.className = wEl.className.replace("popup-dim", "popup-show");
                    hasBreakDown = true;
                }

                //next tier
                var result = ShowBreakDown(0, numTier + 1, numTree, path);
                if (result == true) {
                    hasBreakDown = true;
                } else if (wEl) {
                    YAHOO.util.Dom.getElementsByClassName("point-down", "div", wEl)[0].style.display = "none";
                }
            }
            else
            {
                while (prizePrefixId[numTier]) {
                    if (treePrizeBreakDown[numTree][prizeTitle[numTier]]) {
                        var canBreak = false;
                        for (var key in treePrizeBreakDown[numTree][prizeTitle[numTier]]) {
                            var pos = key.indexOf(path + "-");
                            if (pos == 0) {
                                var right = key.substring(path.length + 1);
                                if (right.indexOf("-") >= 0) {
                                    canBreak = true;
                                    break;
                                }
                                var idNum = treePrizeBreakDown[numTree][prizeTitle[numTier]][key];
                                var wEl = YAHOO.util.Dom.get(prizePrefixId[numTier] + idNum);
                                if (wEl) {
                                    wEl.className = wEl.className.replace("popup-dim", "popup-show");
                                    hasBreakDown = true;
                                }

                                //next tier
                                var result = ShowBreakDown(0, numTier + 1, numTree, key);
                                if (result == true) {
                                    hasBreakDown = true;
                                } else if (wEl) {
                                    YAHOO.util.Dom.getElementsByClassName("point-down", "div", wEl)[0].style.display = "none";
                                }
                            }
                        }
                        if (canBreak) {
                            break;
                        }
                    }
                    numTier = numTier + 1;
                }
            }
        }
    }

    return hasBreakDown;
}

function getSubmission(target) {
    var submission = null;
    var container = YAHOO.util.Dom.getElementsByClassName("breakdown-submission", "span", target);
    if (container && container.length != 0) {
        submission = container[0].innerHTML;
    }
    return submission;
}

function ShowSameSubmission(numTier, target)
{
    var submission = getSubmission(target);
    if (!submission) {
        return;
    }

    var prizeTier = numTier + 1;
    while (prizePrefixId[prizeTier]) {
        if (phaseMapping[numTier] != phaseMapping[prizeTier]) {
            break;
        }

        for(var j=1; j <= prizeTotalCnt[prizeTier]; j++)
        {
            var wEl = YAHOO.util.Dom.get(prizePrefixId[prizeTier] + j);
            if(wEl && submission == getSubmission(wEl))
            {
                wEl.className = wEl.className.replace("popup-dim", "popup-show");
                YAHOO.util.Dom.getElementsByClassName("point-down", "div", wEl)[0].style.display = "none";
                YAHOO.util.Dom.getElementsByClassName("point-down", "div", target)[0].style.display = "block";
            }
        }

        prizeTier = prizeTier + 1;
    }

    prizeTier = numTier + 1;
    while (prizePrefixId[prizeTier]) {
        if (phaseMapping[prizeTier] * 3 - 2 == prizeTier) {
            var mapping = new Object();
            for(var j=1; j <= prizeTotalCnt[prizeTier + 1]; j++)
            {
                var wEl = YAHOO.util.Dom.get(prizePrefixId[prizeTier + 1] + j);
                if (wEl) {
                    submission = getSubmission(wEl);
                    mapping[submission] = submission;
                }
            }
            for(var j=1; j <= prizeTotalCnt[prizeTier]; j++)
            {
                var wEl = YAHOO.util.Dom.get(prizePrefixId[prizeTier] + j);
                if(wEl && mapping[getSubmission(wEl)])
                {
                    YAHOO.util.Dom.getElementsByClassName("point-down", "div", wEl)[0].style.display = "block";
                }
            }
        }

        prizeTier = prizeTier + 1;
    }
}

function SetBreakDownDim()
{
    var i = 1;
    while(prizePrefixId[i])
    {
        for(j = 1; j <= prizeTotalCnt[i]; j++)
        {
            var wId = prizePrefixId[i] + j;
            var wEl = YAHOO.util.Dom.get(wId);
            if (wEl) {
                if(wEl.className.indexOf("popup-dim") == -1 && wEl.className.indexOf("popup-show") == -1)
                    wEl.className += " popup-dim";
                else if(wEl.className.indexOf("popup-dim") == -1)
                    wEl.className = wEl.className.replace("popup-show", "popup-dim");
                YAHOO.util.Dom.getElementsByClassName("point-down", "div", wEl)[0].style.display = "block";
            }
        }
        i++;
    }
}

function ResetBreakDown()
{
    var i = 1;
    while(prizePrefixId[i])
    {
        for(j = 1; j <= prizeTotalCnt[i]; j++)
        {
            var wId = prizePrefixId[i] + j;
            var wEl = YAHOO.util.Dom.get(wId);
            if (wEl) {
                wEl.className = wEl.className.replace(" popup-show", "").replace(" popup-dim", "");
            }
        }
        i++;
    }
}

function SetOpacity(element)
{
    element.style.filter="alpha(opacity=80)";
    element.style.opacity="0.80";
    element.style.MozOpacity="0.80";
}

function SetPopupPosition(target, numElmId)
{
    var container = YAHOO.util.Dom.get("popup-container");
    var point = YAHOO.util.Dom.get("popup-point");
    var posLeft = target.offsetLeft - 339;

    var posTop = target.offsetTop - container.offsetHeight/2 - 1;
    if(posLeft < 0)
    {
        point.className = "point-left";
        posLeft = target.offsetLeft + target.offsetWidth + 32;
    }
    else
    {
        point.className = "point-right";
    }
    //IE setting position
    /*if(document.all)
    {
        posLeft -= 245;
        posTop += target.parentNode.offsetTop + target.parentNode.parentNode.offsetTop;
    }*/

    container.style.marginLeft = posLeft + "px";
    container.style.marginTop = posTop + "px";

}

function ShowPopup(prizeId, prizeTier, numTree)
{
    //reset popup rows
    ResetRows();

    var prizeTotal = 0;
    var m = 1;
    var numTier = prizeTier;
    while(prizePrefixId[numTier])
    {
        var prize = 0;
        var hasPrize = false;
        var idNum = 1;
        for(j=1; j <= prizeTotalCnt[numTier]; j++)
        {
            var wEl = YAHOO.util.Dom.get(prizePrefixId[numTier] + j);
            if(wEl && wEl.className.indexOf("popup-show") != -1)
            {
                var temp = AppendRow(j, numTier, m, prizeTier);
                prize += temp;
                if (temp != 0) {
                  hasPrize = true;
                }
                idNum = j;
            }
        }
        if(hasPrize)
        {
            AppendTopRow(idNum, numTier, m, prize);
            prizeTotal += prize;
            m++;
        }
        numTier++;
    }
    //update the top most row
    AppendHeaderRow(prizeId, prizeTier, 0, prizeTotal)

    var container = YAHOO.util.Dom.get("popup-container");
    container.style.display = "block";
    var point = YAHOO.util.Dom.get("popup-point");
    point.style.marginTop = (container.offsetHeight - point.offsetHeight)/2 + "px";
}

function ResetRows()
{
    for(i = 0; i <= 8; i++)
    {
        var popupRow = YAHOO.util.Dom.get("popup-row-content" + i);
        popupRow.innerHTML = "";
        popupRow.style.display = "none";
    }
}

function AppendHeaderRow(idNum, numTier, m, prize)
{
    var wEl = YAHOO.util.Dom.get(prizePrefixId[numTier] + idNum);
    if (wEl) {
      var container = YAHOO.util.Dom.getElementsByClassName("breakdown-title", "p", wEl);
      if (container && container.length != 0) {
        var title = container[0].innerHTML;
        var name = YAHOO.util.Dom.getElementsByClassName("breakdown-name", "p", wEl)[0].innerHTML;
        var location = YAHOO.util.Dom.getElementsByClassName("breakdown-location", "p", wEl)[0].innerHTML;

        var popupRow = YAHOO.util.Dom.get("popup-row-content"+m);
        var topRow = "<div class='phase-row'><div class='right-column' style='color: #faa202; font-size: 25px;'>$" + formatCurrency(prize) + "</div><div class='left-column'><span>" + name + "</span> - " + location + "</div></div>";
        topRow += "<div class='phase-row top-row'><div class='left-column'>" + title + "</div></div>"
        popupRow.innerHTML = topRow;
        popupRow.style.display = "block";
      }
    }
}

function AppendTopRow(idNum, numTier, m, prize)
{
    var phase = "Phase " + phaseMapping[numTier] + " : ";
    switch(numTier)
    {
        case 1: phase += YAHOO.util.Dom.get("IDEA-header").innerHTML; break;
        case 2: phase += YAHOO.util.Dom.get("IDEA_MostViewed-header").innerHTML; break;
        case 3: phase += YAHOO.util.Dom.get("IDEA_Predictions-header").innerHTML; break;
        case 4: phase += YAHOO.util.Dom.get("PITCH-header").innerHTML; break;
        case 5: phase += YAHOO.util.Dom.get("PITCH_MostViewed-header").innerHTML; break;
        case 6: phase += YAHOO.util.Dom.get("PITCH_Predictions-header").innerHTML; break;
        case 7: phase += YAHOO.util.Dom.get("VIDEO-header").innerHTML; break;
        case 8: phase += YAHOO.util.Dom.get("VIDEO_MostViewed-header").innerHTML; break;
        case 9: phase += YAHOO.util.Dom.get("VIDEO_Predictions-header").innerHTML; break;
  }

    var popupRow = YAHOO.util.Dom.get("popup-row-content"+m);
    var topRow = "<div class='phase-row top-row'><div class='right-column'>$" + formatCurrency(prize) + "</div><div class='left-column' style='color: #000;'>" + phase + "</div></div>"
    popupRow.innerHTML = topRow + popupRow.innerHTML;
    popupRow.style.display = "block";
}

function AppendRow(idNum, numTier, m, prizeTier)
{
    var wEl = YAHOO.util.Dom.get(prizePrefixId[numTier] + idNum);
    if (wEl) {
      var container = YAHOO.util.Dom.getElementsByClassName("breakdown-title", "p", wEl);
      if (container && container.length != 0) {
        var title = container[0].innerHTML;
        var prize = YAHOO.util.Dom.getElementsByClassName("breakdown-prize", "p", wEl)[0].innerHTML;
        var actualPrize = YAHOO.util.Dom.getElementsByClassName("actual-breakdown-prize", "div", wEl)[0].innerHTML;
        var place = "Place - ";
        switch(idNum)
        {
            case 1: place = "1st Place - "; break;
            case 2: place = "2nd Place - "; break;
            case 3: place = "3rd Place - "; break;
            case 4: place = "4th Place - "; break;
            case 5: place = "5th Place - "; break;
        }
        var leaveActual = true;
        var retPrize = prize.replace(/(\$)+/g,"").replace(/(,)+/g,"");  // strip off formatting
        if (!isNaN(retPrize/1)) {
            retPrize = retPrize/1;
            if(phaseMapping[numTier] != phaseMapping[prizeTier])
            {
                if(phaseMapping[prizeTier] == 1) {
                    retPrize = retPrize * (ideaResidualAwardPercentage ? ideaResidualAwardPercentage : 0) / 100;
                    leaveActual = false;
                }
                else if(phaseMapping[prizeTier] == 2) {
                    retPrize = retPrize * (pitchResidualAwardPercentage ? pitchResidualAwardPercentage : 0) / 100;
                    leaveActual = false;
                }
            }
        }
        var resultPrize = leaveActual ? actualPrize/1 : retPrize;
        prize = "$" + formatCurrency(resultPrize);

        var popupRow = YAHOO.util.Dom.get("popup-row-content"+m);
        popupRow.innerHTML += "<div class='phase-row'><div class='right-column' style='color:#3d3d3d;'>" + formatCurrency(prize) + "</div><div class='left-column'>" + place + "<span>" + title + "</span></div></div>";
        return(resultPrize);
      } else {
        return 0;
      }
    } else {
      return 0;
    }
}

function HidePopup()
{
    YAHOO.util.Dom.get("popup-container").style.display = "none";
}

function HidePrizeBreakDown()
{
    HidePopup();
    ResetBreakDown();
}
