var secs;
var timerID = null;
var timerRunning = false;
var delay = 1000;
var coursePar;
var currentRound;
var R1_status;
var R2_status;
var R3_status;
var R4_status;
var qsParm = new Array();

function loadXML() {

    qsParm['id'] = null;
    qs();

    var url="/scoring2010/dyn/card/card"  + qsParm['id'] + ".xml";

    try {
        if (window.ActiveXObject) {
            var errorHappendHere = "Check Browser and security settings";
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async=false;
            xmlDoc.load(url);
        }
        else if(window.XMLHttpRequest) {
            var errorHappendHere = "Error handling XMLHttpRequest request";
            var d = new XMLHttpRequest();
            d.open("GET", url, false);
            d.send(null);
            xmlDoc=d.responseXML;
        } else {
            var errorHappendHere = "Error.";
            xmlDoc = document.implementation.createDocument("","",null);
            xmlDoc.async=false;
        xmlDoc.load(url);
        }
    }
    catch(e)	{
        alert(errorHappendHere);
    }

    currentRound = showRound(xmlDoc);
    setPlayerStatus(xmlDoc);
    document.getElementById("eventName").innerHTML=showName(xmlDoc);
    document.getElementById("updateTime").innerHTML=showTime(xmlDoc);
    document.getElementById("cardHeader").innerHTML=showCardHeader(xmlDoc);
    document.getElementById("scoreCard").innerHTML=showScoreCard(xmlDoc);
    document.getElementById("statsSummary").innerHTML=showStats(xmlDoc);
}

function qs() {
    var query = window.location.search.substring(1);
    var parms = query.split('&');
    for (var i=0; i<parms.length; i++) {
        var pos = parms[i].indexOf('=');
        if (pos > 0) {
            var key = parms[i].substring(0,pos);
            var val = parms[i].substring(pos+1);
            qsParm[key] = val;
        }
    }
}

function showCardHeader(mDoc) {

    var x=mDoc.getElementsByTagName('player');

    var tbl="<table border='0' cellpadding='4' cellspacing='0' bgcolor='#EEECF1' align='center' class='mainTbl' width='910'>";
    tbl += "<tr>";
    tbl += "<td class='cardname' align='center' valign='middle'>" + x[0].getAttribute('name') + "<br><span class='cardcity'>" + x[0].getAttribute('city') + "</span></td>";
    tbl += "<td><img src='/images/scoring/flag/" + x[0].getAttribute('country') + ".gif'></td>";
    tbl += "<td>";
    tbl += "<table border='0' align='center' cellpadding='3' cellspacing='1' class='cardhole'>";
    tbl += "<tbody>";
    tbl += "<tr align='center'>";
    tbl += "<td><b>Position</b></td>";
    tbl += "<td><b>Total</b></td>";
    tbl += "<td><b>Hole</b></td>";
    tbl += "<td><b>Today</b></td>";
    tbl += "</tr>";
    tbl += "<tr class='cRow'>";
    if (x[0].getAttribute('status') == 'cut') {
        tbl += "<td colspan='4'>Missed Cut</td>";
    } else {
        tbl += "<td>" + x[0].getAttribute('curPos') + "</td>";
        tbl += "<td>" + x[0].getAttribute('curTotal') + "</td>";
        tbl += "<td>" + x[0].getAttribute('curHole') + "</td>";
        tbl += "<td>" + x[0].getAttribute('curToday') + "</td>";
    }
    tbl += "</tr>";
    tbl += "</tbody>";
    tbl += "</table>";
    tbl += "</td>";
    tbl += "</tr>";
    tbl += "</table>";
    return tbl;
}

function showScoreCard(mDoc) {

    var a=mDoc.getElementsByTagName('holelist');
    var b=a[0].getElementsByTagName('mList');
    var tbl="<table border='0' cellpadding='0' cellspacing='0' width='910' class='mainTbl' align='center'>";
	tbl +=  "<tr><td>";
    tbl +=  "<table border='0' height='66' cellpadding='3' cellspacing='1' width='910' class='cardhole' align='center'>";
    tbl +=  "<tr align='center' class='holeBan'>";
    tbl +=  "<td align='center'>Hole</td>";
    for (i=0;i<b.length;i++) {
        tbl += "<td>" + b[i].firstChild.nodeValue + "</td>";

    }
    tbl += "</tr>";

    var a=mDoc.getElementsByTagName('yardlist');
    var b=a[0].getElementsByTagName('mList');

    tbl += "<tr class='rowtitle'>";
    tbl += "<td>Yards</td>";
    for (i=0;i<b.length;i++) {
        tbl += "<td align='center'>" + b[i].firstChild.nodeValue + "</td>";

    }
    tbl += "</tr>";

    var a=mDoc.getElementsByTagName('parlist');
    var b=a[0].getElementsByTagName('mList');

    tbl += "<tr class='rowtitle'>";
    tbl += "<td>Par</td>";
    for (i=0;i<b.length;i++) {
        tbl += "<td align='center'>" + b[i].firstChild.nodeValue + "</td>";

    }
    tbl += "</tr>";

    tbl += "<tr bgcolor='white'>";
    tbl += "<td colspan='22'><img src='/images/scoring/img/mt.gif' height='1'></td>";
    tbl += "</tr>"

    var a=mDoc.getElementsByTagName('player')[0].getElementsByTagName('round')[0].getElementsByTagName('hole');

    tbl += "<tr class='rowtext'>";
    tbl += "<td>Round 1</td>";
    for (i=0;i<a.length;i++) {
        tbl += "<td align='center' class='" + a[i].getAttribute('namedScore') + "'>";
        tbl += a[i].getAttribute('strokes');
        tbl += "</td>";
    }
    tbl += "</tr>";

    if (currentRound >= 2) {
        var a=mDoc.getElementsByTagName('player')[0].getElementsByTagName('round')[1].getElementsByTagName('hole');

        tbl += "<tr class='rowtext'>";
        tbl += "<td>Round 2</td>";
        for (i=0;i<a.length;i++) {
            tbl += "<td align='center' class='" + a[i].getAttribute('namedScore') + "'>";
            tbl += a[i].getAttribute('strokes');
            tbl += "</td>";
        }
        tbl += "</tr>";
    }

    if (currentRound >= 3) {
        var a=mDoc.getElementsByTagName('player')[0].getElementsByTagName('round')[2].getElementsByTagName('hole');

        tbl += "<tr class='rowtext'>";
        tbl += "<td>Round 3</td>";
        for (i=0;i<a.length;i++) {
            tbl += "<td align='center' class='" + a[i].getAttribute('namedScore') + "'>";
            tbl += a[i].getAttribute('strokes');
            tbl += "</td>";
        }
        tbl += "</tr>";
    }

    if (currentRound >= 4) {
        var a=mDoc.getElementsByTagName('player')[0].getElementsByTagName('round')[3].getElementsByTagName('hole');

        tbl += "<tr class='rowtext'>";
        tbl += "<td>Round 4</td>";
        for (i=0;i<a.length;i++) {
            tbl += "<td align='center' class='" + a[i].getAttribute('namedScore') + "'>";
            tbl += a[i].getAttribute('strokes');
            tbl += "</td>";
        }
        tbl += "</tr>";
    }

    tbl += "</table>";
	tbl += "</td></tr>";
	tbl += "</table>";
    return tbl;
}

function showStats(mDoc) {

    var tbl = "<table border='0' cellpadding='0' cellspacing='0' width='910' align='center' class='mainTbl'>";
	tbl += "<tr><td>";
    tbl += "<table border='0' cellpadding='0' cellspacing='0' width='803' align='center'>";
    tbl += "<tr class='holeBan'>";
    tbl += "<td colspan='6' align='center'>-- Statistical Summary --</td>";
    tbl += "</tr>";
    tbl += "<tr class='rowtitle'>";
    tbl += "<td></td>";
    tbl += "<td align='center'>Round 1</td>";
    tbl += "<td align='center'>Round 2</td>";
    tbl += "<td align='center'>Round 3</td>";
    tbl += "<td align='center'>Round 4</td>";
    tbl += "<td align='center'>Overall</td>";
    tbl += "</tr>";
    tbl += "<tr>";
    tbl += "<td bgColor='#001658' colspan='6' height='2'></td>";
    tbl += "</tr>";

    var a=mDoc.getElementsByTagName('round');
    tbl += "<tr class='oddplayername'>";
    tbl += "<td valign='top'>Score</td>";
    tbl += "<td align='center'>" + showRoundScore(a, 1, 'totaltopar') + "<br>" + showRoundScore(a, 1, 'strokes') + "</td>";
    tbl += "<td align='center'>" + showRoundScore(a, 2, 'totaltopar') + "<br>" + showRoundScore(a, 2, 'strokes') + "</td>";
    if (R3_status != 'cut') {
        tbl += "<td align='center'>" + showRoundScore(a, 3, 'totaltopar') + "<br>" + showRoundScore(a, 3, 'strokes') + "</td>";
    } else {
        tbl += "<td align='center'><br></td>";
    }
    if (R4_status != 'cut') {

        tbl += "<td align='center'>" + showRoundScore(a, 4, 'totaltopar') + "<br>" + showRoundScore(a, 4, 'strokes') + "</td>";
    } else {
        tbl += "<td align='center'><br></td>";
    }

    var overallScore = showRoundScoreTotal(a);

    var x=mDoc.getElementsByTagName('player');
    tbl += "<td align='center'>" + x[0].getAttribute('curTotal') + "<br>"+ overallScore +"</td>";
    tbl += "</tr>";

    tbl += "<tr>";
    tbl += "<td bgColor='#001658' colspan='6' height='2'></td>";
    tbl += "</tr>";

    var a=mDoc.getElementsByTagName('drives'); 
    tbl += "<tr class='evenplayername'>";
    tbl += "<td>Average Drive</td>";
    tbl += "<td align='center'>" + statReturn(a, 1, 'R1') + "</td>";
    tbl += "<td align='center'>" + statReturn(a, 2, 'R2') + "</td>";
    tbl += "<td align='center'>" + statReturn(a, 3, 'R3') + "</td>";
    tbl += "<td align='center'>" + statReturn(a, 4, 'R4') + "</td>";
    tbl += "<td align='center'>" + statReturn(a, 1, 'driveTotal') + "</td>";
    tbl += "</tr>";

    var a=mDoc.getElementsByTagName('fairways');
    tbl += "<tr class='oddplayername'>";
    tbl += "<td>Fairways Hit<br>Percentage</td>";
    tbl += "<td align='center'>" + statReturn(a, 1, 'R1_hit') + "<br>" + statReturn(a, 1, 'R1_ave') + "</td>";
    tbl += "<td align='center'>" + statReturn(a, 2, 'R2_hit') + "<br>" + statReturn(a, 2, 'R2_ave') + "</td>";
    tbl += "<td align='center'>" + statReturn(a, 3, 'R3_hit') + "<br>" + statReturn(a, 3, 'R3_ave') + "</td>";
    tbl += "<td align='center'>" + statReturn(a, 4, 'R4_hit') + "<br>" + statReturn(a, 4, 'R4_ave') + "</td>";
    tbl += "<td align='center'>" + statReturn(a, 1, 'Total_hit') + "<br>" + statReturn(a, 1, 'Total_ave') + "</td>";
    tbl += "</tr>";

    var a=mDoc.getElementsByTagName('gir');
    tbl += "<tr class='evenplayername'>";
    tbl += "<td>Greens in Regulation<br>Percentage</td>";
    tbl += "<td align='center'>" + statReturn(a, 1, 'R1_hit') + "<br>" + statReturn(a, 1, 'R1_ave') + "</td>";
    tbl += "<td align='center'>" + statReturn(a, 2, 'R2_hit') + "<br>" + statReturn(a, 2, 'R2_ave') + "</td>";
    tbl += "<td align='center'>" + statReturn(a, 3, 'R3_hit') + "<br>" + statReturn(a, 3, 'R3_ave') + "</td>";
    tbl += "<td align='center'>" + statReturn(a, 4, 'R4_hit') + "<br>" + statReturn(a, 4, 'R4_ave') + "</td>";
    tbl += "<td align='center'>" + statReturn(a, 1, 'Total_hit') + "<br>" + statReturn(a, 1, 'Total_ave') + "</td>";
    tbl += "</tr>";

    var a=mDoc.getElementsByTagName('putts');
    tbl += "<tr class='oddplayername'>";
    tbl += "<td>Putts Per Round<br>Putts Per Hole</td>";
    tbl += "<td align='center'>" + statReturn(a, 1, 'R1_putts') + "<br>" + statReturn(a, 1, 'R1_pph') + "</td>";
    tbl += "<td align='center'>" + statReturn(a, 2, 'R2_putts') + "<br>" + statReturn(a, 2, 'R2_pph') + "</td>";
    tbl += "<td align='center'>" + statReturn(a, 3, 'R3_putts') + "<br>" + statReturn(a, 3, 'R3_pph') + "</td>";
    tbl += "<td align='center'>" + statReturn(a, 4, 'R4_putts') + "<br>" + statReturn(a, 4, 'R4_pph') + "</td>";
    tbl += "<td align='center'>" + statReturn(a, 1, 'Total_putts') + "<br>" + statReturn(a, 1, 'Total_pph') + "</td>";
    tbl += "</tr>";

    tbl += "<tr>";
    tbl += "<td bgColor='#001658' colspan='6' height='2'></td>";
    tbl += "</tr>";

    var a=mDoc.getElementsByTagName('round');

    tbl += "<tr class='evenplayername'>";
    tbl += "<td>Eagles</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 1,'eagle') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 2,'eagle') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 3,'eagle') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 4,'eagle') + "</td>";
    tbl += "<td align='center'>" + namedDisplayTotal(a,'eagle') + "</td>";
    tbl += "</tr>";

    tbl += "<tr class='oddplayername'>";
    tbl += "<td>Birdies</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 1,'birdie') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 2,'birdie') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 3,'birdie') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 4,'birdie') + "</td>";
    tbl += "<td align='center'>" + namedDisplayTotal(a,'birdie') + "</td>";
    tbl += "</tr>";

    tbl += "<tr class='evenplayername'>";
    tbl += "<td>Pars</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 1,'par') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 2,'par') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 3,'par') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 4,'par') + "</td>";
    tbl += "<td align='center'>" + namedDisplayTotal(a,'par') + "</td>";
    tbl += "</tr>";

    tbl += "<tr class='oddplayername'>";
    tbl += "<td>Bogeys</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 1,'bogey') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 2,'bogey') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 3,'bogey') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 4,'bogey') + "</td>";
    tbl += "<td align='center'>" + namedDisplayTotal(a,'bogey') + "</td>";
    tbl += "</tr>";

    tbl += "<tr class='evenplayername'>";
    tbl += "<td>Double Bogeys</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 1,'double bogey') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 2,'double bogey') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 3,'double bogey') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 4,'double bogey') + "</td>";
    tbl += "<td align='center'>" + namedDisplayTotal(a,'double bogey') + "</td>";
    tbl += "</tr>";

    tbl += "<tr class='oddplayername'>";
    tbl += "<td>Other</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 1,'other') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 2,'other') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 3,'other') + "</td>";
    tbl += "<td align='center'>" + namedDisplay(a, 4,'other') + "</td>";
    tbl += "<td align='center'>" + namedDisplayTotal(a,'other') + "</td>";
    tbl += "</tr>";

    tbl += "<tr>";
    tbl += "<td bgColor='#001658' colspan='6' height='2'></td>";
    tbl += "</tr>";
    tbl += "<tr class='evenplayername'>";
    tbl += "<td>Par 3's</td>";
    tbl += "<td align='center'>" + holeTypeDisplay(a, 1,3) + "</td>";
    tbl += "<td align='center'>" + holeTypeDisplay(a, 2,3) + "</td>";
    tbl += "<td align='center'>" + holeTypeDisplay(a, 3,3) + "</td>";
    tbl += "<td align='center'>" + holeTypeDisplay(a, 4,3) + "</td>";
    tbl += "<td align='center'>" + holeTypeDisplayTotal(a,3) + "</td>";
    tbl += "</tr>";

    tbl += "<tr class='oddplayername'>";
    tbl += "<td>Par 4's</td>";
    tbl += "<td align='center'>" + holeTypeDisplay(a, 1,4) + "</td>";
    tbl += "<td align='center'>" + holeTypeDisplay(a, 2,4) + "</td>";
    tbl += "<td align='center'>" + holeTypeDisplay(a, 3,4) + "</td>";
    tbl += "<td align='center'>" + holeTypeDisplay(a, 4,4) + "</td>";
    tbl += "<td align='center'>" + holeTypeDisplayTotal(a,4) + "</td>";
    tbl += "</tr>";

    tbl += "<tr class='evenplayername'>";
    tbl += "<td>Par 5's</td>";
    tbl += "<td align='center'>" + holeTypeDisplay(a, 1,5) + "</td>";
    tbl += "<td align='center'>" + holeTypeDisplay(a, 2,5) + "</td>";
    tbl += "<td align='center'>" + holeTypeDisplay(a, 3,5) + "</td>";
    tbl += "<td align='center'>" + holeTypeDisplay(a, 4,5) + "</td>";
    tbl += "<td align='center'>" + holeTypeDisplayTotal(a,5) + "</td>";
    tbl += "</tr>";


    tbl += "</table>";
	tbl += "</td></tr>";
	tbl += "</table>";
    return tbl;

}

function showName(mDoc){
    var x=mDoc.getElementsByTagName('tournament');
    document.title = x[0].getAttribute('name');
    return x[0].getAttribute('name');
}

function showRound(mDoc){
    var x=mDoc.getElementsByTagName('tournament');
    return x[0].getAttribute('currentround');
}

function setPlayerStatus(mDoc){
    var x=mDoc.getElementsByTagName('player');
    var a = x[0].getElementsByTagName('round');
    if (currentRound >= 1) {
        R1_status = a[0].getAttribute('status');
    }
    if (currentRound >= 2) {
        R2_status = a[1].getAttribute('status');
    }
    if (currentRound >= 3) {
        R3_status = a[2].getAttribute('status');
    }
    if (currentRound >= 4) {
        R4_status = a[3].getAttribute('status');
    }
}

function getPlayerStatus(mRound){
    switch (mRound) {
    case 1:
        return R1_status;
        break;
    case 2:
        return R2_status;
        break;
    case 3:
        return R3_status;
        break;
    case 4:
        return R4_status;
        break;
    }

}

function showTime(mDoc){
    var x=mDoc.getElementsByTagName('event');
    return x[0].getAttribute('localtime');
}


function namedDisplay(allRounds, thisRound, mName){
    var mStatus = getPlayerStatus(thisRound);
    if (currentRound >= thisRound && mStatus != 'cut') {
        var ctr = 0;
        if (allRounds[thisRound-1].getAttribute('status') == 'incomplete' || allRounds[thisRound-1].getAttribute('status') == 'completed') {
            var b = allRounds[thisRound-1].getElementsByTagName('hole');
            for (i=0;i<b.length;i++) {
                if (b[i].getAttribute('namedScore') == mName) {
                    ctr++;
                }
            }
            return ctr;
        }
    } else {
        return '';
    }
}

function namedDisplayTotal(allRounds, mName){
    var ctr = 0;
    var tmp;
    for (i=0;i<allRounds.length;i++) {
        var b = allRounds[i].getElementsByTagName('hole');
        for (j=0;j<b.length;j++) {
            if (b[j].getAttribute('namedScore') == mName) {
                ctr++;
            }
        }
    }
    return ctr;
}

function holeTypeDisplay(allRounds, thisRound, mPar){
    var mStatus = getPlayerStatus(thisRound);
    if (currentRound >= thisRound && mStatus != 'cut') {
        var holeCtr = 0;
        var scoreSum = 0;
        var result = "";
        var b = allRounds[thisRound-1].getElementsByTagName('hole');
        for (i=0;i<b.length;i++) {
            if (b[i].getAttribute('holePar') == mPar) {
                scoreSum += Number(b[i].getAttribute('strokes'));
                if (b[i].getAttribute('strokes') != '') {
                    holeCtr++;
                }
            }
        }

        if (scoreSum - (holeCtr * mPar) == 0) {
            result = 'Even';
        } else if (scoreSum - (holeCtr * mPar) > 0) {
            result = '+' + Number(scoreSum - (holeCtr * mPar)).toString();
        } else {
            result = Number(scoreSum - (holeCtr * mPar)).toString();
        }
        return result;
    } else {
        return '';
    }
}

function holeTypeDisplayTotal(allRounds, mPar){
    var holeCtr = 0;
    var scoreSum = 0;
    var result = "";
    for (i=0;i<allRounds.length;i++) {
        var b = allRounds[i].getElementsByTagName('hole');
        for (j=0;j<b.length;j++) {
            if (b[j].getAttribute('holePar') == mPar) {
                if (b[j].getAttribute('strokes') != '') {
                    scoreSum += Number(b[j].getAttribute('strokes'));
                    holeCtr++;
                }
            }
        }
    }

    if (scoreSum - (holeCtr * mPar) == 0) {
        result = 'Even';
    } else if (scoreSum - (holeCtr * mPar) > 0) {
        result = '+' + Number(scoreSum - (holeCtr * mPar)).toString();
    } else {
        result = Number(scoreSum - (holeCtr * mPar)).toString();
    }
    return result;
}

function statReturn(allRounds, thisRound, attr){
    var mStatus = getPlayerStatus(thisRound);
    if (currentRound >= thisRound && mStatus != 'cut') {
        if (allRounds[0].getAttribute(attr)!='NaN') {
            return allRounds[0].getAttribute(attr);
        } else {
            return '';
        }
    } else {
        return "";
    } 
    return "";
}

function showRoundScore(allRounds, thisRound, attr){
    if (currentRound >= thisRound) {
        if (allRounds[thisRound-1].getAttribute(attr) == 0 && attr == 'totaltopar') {
            return 'E';
        } else {
            if (attr == 'strokes' && allRounds[thisRound-1].getAttribute(attr) == '') {
                return '<img src="/images/scoring/img/mt.gif" height="10"/>';
            } else {
                return allRounds[thisRound-1].getAttribute(attr);
            }


        }
    } else {
        return '<img src="/images/scoring/img/mt.gif" height="10"/>';
    }
}

function showRoundScoreTotal(allRounds){
    var scoreSum = 0;

    for (i=0;i<allRounds.length;i++) {
        scoreSum += Number(allRounds[i].getAttribute('strokes'));
    }   
    return scoreSum;
}


function InitializeTimer(){
    // Set the length of the timer, in seconds
    secs = 60
    StartTheTimer()
}

function StopTheClock(){
    if (timerRunning)
        clearTimeout(timerID)
    timerRunning = false
}

function StartTheTimer(){
    if (secs==0) {
        StopTheClock();
        loadXML();
        InitializeTimer();
    } else {
        self.status = secs
        secs = secs - 1
        timerRunning = true
        timerID = self.setTimeout("StartTheTimer()", delay)
    }
}

function InitializePage(){
    loadXML();
    InitializeTimer();
}








